2012-07-28 46 views
5

我的网站受到攻击者试图访问用户帐户的蛮力攻击。机器人没有用户代理。如果在10分钟内每个帐户的尝试次数超过3次,我的系统会阻止某人登录。会话是否仅存储在浏览器中?

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

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

我实现了这个问题,以及:

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

有什么事我可以做些什么来防止这些攻击?

+2

会话是服务器端存储(通常)与使用cookie的用户链接。 – nickb 2012-07-28 01:39:29

+0

Google for:会话劫持在php中 – Yang 2012-07-28 01:49:43

回答

14

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

在Wiki上有session hijacking有一个很有趣的阅读,也有一个在PHP Security Consortium,这应该让你更好地理解劫持是什么以及如何预防它。

有很多方法来帮助阻止这些攻击,我已经指出了三条:

  • 使用PHP的session_regenerate_id()用户成功登录后 这将创建一个新的会话ID,从不同的。一个是他们第一次访问公共/安全区时创建的,当然是开始了一个会话。
  • 成功登录时记录用户的IP地址,会话ID和用户代理。检查每个请求的IP和用户代理,如果IP和代理不匹配此会话,请再次登录。但要小心,有时用户的IP可能会改变,并可能会惹恼某人。另外请注意,用户代理也可能很容易被欺骗。
  • 使用SSL/TCL来隐藏请求中发送的信息。
相关问题