我一直在使用一个安全的登录/门户类型的工具集,通用代码是免费的sql注入,XSS等,我有多个事情停止会话劫持.
>为每个页面重新生成会话的ID
>在登录时将用户的IP与IP进行比较
>在登录时将用户的user_agent与代理进行比较
>会议时间短
等等
我已经做了所有我可以想到的停止劫持,但我仍然找到一个可能的情况,并想知道是否有任何想法.
想象一下,在SNAT / DNAT的防火墙后面有两个用户,所以这两个用户来自同一个IP.它们都是同一个地方提供的相同的机器.一个连接到该站点并登录,另一个复制PHPSESSID cookie,并且可以简单地窃取会话.
这可能听起来像一个极端的例子,但是这与我的工作场所非常相似,每个人都在防火墙后面看起来是相同的IP,所有的机器都由IT团队管理/提供,所以都有相同的版本的浏览器,操作系统等
我试图想到另一种方式(服务器端)停止劫持或进一步减少它,我在想一个嵌入到每个URL(每页更改)并被检查的令牌.
强制一切使用HTTPS.
我认为你是指网络中的用户嗅探cookie的被动攻击.为此,您不需要HTTPS.当各方确信他们正在说话时,有几个选项是足够的(例如,您可以首先进行DH交换,并且服务器会加密客户端在下次请求中使用的令牌…),但不是值得走这条路线的麻烦.
如果用户最初键入非https地址,则仍然可以进行主动攻击,但在这种情况下您无法做到这一点.将来,一旦用户通过HTTP strict transport security.建立了一个与您的站点的无偏置连接,您可以防止这种未来的攻击.