freeCodeCamp/guide/chinese/php/security/session-hijacking/index.md

45 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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)