我读过有关阻止会话固定的session_regenerate_id()
。
如果有人在中间攻击中做了一个人,并窃取了生成的id,那么请使用该会话登录。
然后真实用户将被注销,进行攻击的人将获得对用户帐户的访问权。
我该如何防止这种情况?
答案 0 :(得分:6)
中间攻击中对人类最有效的防御是HTTPS。您可以将会话Cookie参数设置为仅使用session_set_cookie_params
(docs)通过安全连接传输Cookie。
因为只有客户端/服务器知道如何加密/解密请求数据,所以中间人攻击要困难得多。
否则,在不安全的连接中实施对人的防御是非常困难的
答案 1 :(得分:1)
反黑客措施
我完全同意范围,但会更进一步并使用session_regenerate_id(true);
删除旧的会话文件,因为这告诉php删除磁盘上此会话的关联文件。为什么要将文件保存在不再需要的服务器上?
另一个反会话黑客措施是存储客户端ip的前两个八位字节(当它们加密时可能更多,但我还没有那么多数据隐私知识)并且可能会在数据库中有更多客户端详细信息进行比较与当前客户详细信息。这些数据,尤其是ip,应该加密,并且一旦会话过期就完全删除。
<强>结论强>
有两种方法可以检查授权,所有这些方法都是关于使用https,重新生成会话ID,删除过期的会话文件以及在服务器上的第一个请求中存储客户端详细信息,以便将它们与当前客户端详细信息进行比较。
您需要多少安全性取决于应用程序的目的。说到银行数据,例如您最好实施比您认为必要的更多反黑客措施。一个简单的博客,注册用户只能评论你不需要很多反黑客措施。
请记住
您的应用越安全,用户就越不友好。