7

我的网站受到暴力攻击,攻击者试图访问用户帐户。机器人没有用户代理。我有一个系统,如果一个人在 10 分钟内超过 3 次尝试登录,就会阻止他们登录。

我还让它检查用户代理,如果没有,退出。

我的问题是:会话是否仅存储在浏览器中?我在想的是他们正在使用通过命令行执行的脚本。

我也实现了这个:

if(!isset($_COOKIE[ini_get('session.name')])) {
header("HTTP/1.0 404 Not Found");
exit;
}

我还能做些什么来防止这些攻击吗?

4

1 回答 1

16

会话变量的内容存储在服务器上,但是,会话由存储在客户端并随每个请求发送的会话 ID 标识。通常会话 ID 存储在 cookie 中,但也可以附加到 URL 中。

在 Wiki 和PHP Security Consortium上有一篇关于会话劫持的非常有趣的读物,它应该让您更好地理解劫持是什么以及如何防止它。

有很多方法可以帮助防止这些攻击,我指出了三个:

  • 在用户成功登录后使用 PHP 的session_regenerate_id()。这将创建一个新的会话 ID,与他们第一次访问公共/安全区域时创建的 ID 不同,当然如果有一个会话启动。
  • 成功登录时记录用户的 IP 地址、会话 ID 和用户代理。检查每个请求的 IP 和用户代理,如果 IP 和代理与此会话不匹配,请让他们重新登录。但请注意,有时用户的 IP 可能会更改并可能会惹恼某人。另请注意,用户代理也很容易被欺骗。
  • 使用 SSL/TCL 隐藏请求中发送的信息。
于 2012-07-28T01:41:03.693 回答