45 lines
2.0 KiB
Markdown
45 lines
2.0 KiB
Markdown
---
|
||
title: Session Hijacking
|
||
localeTitle: Захват сеанса
|
||
---
|
||
## Захват сеанса
|
||
|
||
Захват сеанса - это уязвимость, вызванная тем, что злоумышленник получает доступ к идентификатору сеанса пользователя и может использовать учетную запись другого пользователя, олицетворяя их. Это часто используется для доступа к учетной записи администратора.
|
||
|
||
### Защита от атак на захват сеансов в PHP
|
||
|
||
Для защиты от атак с захвата сеанса вам необходимо проверить текущую информацию о браузере и местоположении пользователя в отношении информации, хранящейся в сеансе. Ниже приведен пример реализации, который может помочь смягчить последствия атаки захвата сеанса. Он проверяет IP-адрес, Пользовательский агент и, если сеанс Истек, удаляет сеанс до его возобновления.
|
||
|
||
```PHP
|
||
<?php
|
||
session_start();
|
||
|
||
// Does IP Address match?
|
||
if ($_SERVER['REMOTE_ADDR'] != $_SESSION['ipaddress'])
|
||
{
|
||
session_unset();
|
||
session_destroy();
|
||
}
|
||
|
||
// Does user agent match?
|
||
if ($_SERVER['HTTP_USER_AGENT'] != $_SESSION['useragent'])
|
||
{
|
||
session_unset();
|
||
session_destroy();
|
||
}
|
||
|
||
// Is the last access over an hour ago?
|
||
if (time() > ($_SESSION['lastaccess'] + 3600))
|
||
{
|
||
session_unset();
|
||
session_destroy();
|
||
}
|
||
else
|
||
{
|
||
$_SESSION['lastaccess'] = time();
|
||
}
|
||
```
|
||
|
||
#### Дополнительная информация:
|
||
|
||
* [Руководство по безопасности сессии php.net](https://secure.php.net/manual/en/session.security.php) |