CSRF 保护 - “后页”

信息安全 csrf 防御
2021-09-03 02:31:44

OWASP建议,在实施 CSRF 保护时,任何在浏览器中“返回”的尝试都会导致问题,因为与前一页的交互将导致服务器出现 CSRF 误报安全事件。

我已经看到网上银行通过在您回击后立即销毁会话来处理此问题,但我想知道是否有其他方法可以解决这个问题?理想情况下,我想保留会话,但只是将用户重定向到首页(他们在登录后登陆),但我不确定这是否是一种安全的做事方式。

这大概是 Web 应用程序中的常见问题,我有什么选择?

谢谢

1个回答

完全可以将 Synchroniser Token 模式与适当的导航/多选项卡支持一起使用。只有当你接受有问题的建议时:

为了进一步增强此提议设计的安全性,请考虑随机化每个请求的 CSRF 令牌参数名称和/或值

你有问题。实际上,没有充分的理由对每个请求都这样做。

在会话提升授权时循环 CSRF 令牌只有一个好处——通常在登录和其他更改登录状态的路径(例如注册、帐户恢复、切换用户)上。在这些点上,您还应该循环会话标识符,因此同时执行这两个操作是有意义的。更改会话 ID 可防止会话固定通过会话劫持;更改 CSRF 令牌可通过会话固定防止 CSRF 攻击。

导航回处于注销或先前登录状态的缓存页面(或在另一个选项卡中保持打开状态)然后尝试执行某些操作确实会中断,但大多数人可能不会期望到那时会起作用.

如果您愿意,可以放入一些 JavaScript 来检测这种情况,检查会话 cookie 是否与页面创建时使用的相匹配。(或不是标识符且不是 的关联 cookie httponly,视情况而定。)然后,如果它不匹配,您可以添加警告 div 并重新加载页面链接,和/或阻止页面上的活动表单控件从响应。如果您允许缓存,您将运行该 check onload,加上bfcache ,并可能在偶尔的轮询器上捕获多选项卡的情况。onpageview(这也可以用于在客户端捕获会话超时并呈现更友好的错误。)