因此,我正在开发一个 Flask 网络应用程序,并且我想测试它的安全性,因为我已经实现了以下内容:
- SSL 证书和 cookie 安全传输
- CSRF 令牌以避免 CSRF 攻击
- 验证Cookie,避免Cookie被修改
- Cookie 仅限 http,以避免 XSS
现在,假设我的一个用户被诱骗向恶意用户透露了他的 cookie,并且如果该用户将这些会话 cookie 注入到他自己的浏览器中,则会导致 Web 应用程序允许恶意用户进入会话。
我使用 chrome 和隐身窗口(在同一台计算机上)进行了测试,我可以劫持会话。有没有办法防止这种情况?据我所知,Facebook 已成功防止 cookie 注入,但我不确定。
答案1
您可以检查请求的 IP 位置或请求标头中发送的用户代理信息是否发生变化。这虽然不能 100% 解决问题,但有助于提供更严格的安全性。
此外,还有另一种非常可靠的方法来检测会话劫持。此方法称为“轮换刷新令牌”。它基本上使用两个令牌(访问令牌和刷新令牌),这两个令牌会随时间变化,这种变化使我们能够检测到令牌盗窃。IETF 的 RFC 中也建议使用此方法:https://www.rfc-editor.org/rfc/rfc6749#section-10.4
如果您想了解实施此方法的说明,请查看此博客文章:https://supertokens.io/blog/the-best-way-to-securely-manage-user-sessions