在Stackoverflow上阅读关于会话劫持的许多问题,我已经收集到验证用户会话的唯一“解决方案”是检查用户代理,这是一个如此薄弱的保护层,我不这样做甚至懒得去实施它。
所以,我想知道你们实施了哪些解决方案?您是使用PHP的本机会话还是有更安全的解决方案?
答案 0 :(得分:2)
您不需要会话ID来劫持会话。 XSS攻击可以采用两种方式之一。最常见的是阅读document.cookie
并将其发送到远程服务器(此请求还将包含受害者USER_AGENT,因此检查此值完全是浪费时间,因为不会阻止任何攻击什么都这样)。 Microsoft开发的一种很酷的安全方法称为HTTPOnly Cookies,大多数浏览器都支持此安全功能。
HTTPOnly Cookies并检查客户端的IP地址并不会阻止所有会话劫持。事实上,如果攻击者有XSS漏洞,他只能在受害者浏览器上使用XHR伪造请求,并且不需要知道cookie的价值。
在一天结束时,为了阻止会话劫持,您需要在Web应用程序中插入漏洞。最重要的是,您需要阻止“会话骑乘”,也称为CSRF。您还需要防止XSS个漏洞,Acunetix free edition是查找漏洞的好工具。 。最后但最重要的是,您必须阅读OWASP A3: Broken Authentication and Session Management。常见的违反OWASP A3的行为是人们不会在整个会话中使用HTTPS。在任何时候你都不能将cookie的价值溢出到http,这与溢出用户名/密码的效果完全相同。如果黑客嗅探流量,他将立即访问您的网站。
答案 1 :(得分:0)
如果请求具有不同的IP和/或主机名,只需将用户注销即可。对于拥有动态IP的人来说 - 再次登录并不是一个问题。
显然,处理它的“正确”方式是实施SSL。