【问题标题】:How to implement anti CSRF token protection with multi tab support?如何通过多标签支持实现反 CSRF 令牌保护?
【发布时间】:2015-02-25 18:15:36
【问题描述】:

我有一个应用程序,我想在其中使用安全令牌实现对 CSRF 的保护,但如果同一用户打开一个新选项卡,我也可以使我的应用程序可供该用户使用。

当用户使用正确的用户名/密码组合对自己进行身份验证时,我将他添加到会话中并返回包含令牌的 cookie。当 cookie 到达时,我从 cookie 中删除令牌并将其存储在全局变量中。对于每个请求,我都会附加令牌并将其与服务器上的令牌进行比较。

问题是当我打开一个新标签时,用户会自动从会话中删除,因为收到的请求不包含正确的令牌。

我了解,如果我将该令牌存储在 cookie 或 localStorage 中,我将能够从另一个选项卡中读取它并且请求将是有效的,但我不确定此实现的安全性,甚至不确定哪个实现更好?使用简单的 XSS,您可以从 cookie/localStorage/global 变量中读取令牌...

是否有任何其他方法可以实现 CSRF 令牌保护并且仍然能够从另一个浏览器选项卡使用我的应用程序?

【问题讨论】:

  • 我不只是提交表单,我还在后台用ajax做很多同步方法。

标签: security xss csrf antiforgerytoken


【解决方案1】:

使用简单的 XSS,您可以从 cookie/localStorage/global 变量中读取令牌...

如果您的网站易受 XSS 攻击,那么这始终会取代任何 CSRF 漏洞。

只要为每个新会话刷新 CSRF 令牌,就无需在使用后更改 CSRF 令牌。攻击者无法读取令牌,因此没有额外的风险。

这将使令牌能够跨标签工作而不会降低安全性。

【讨论】:

猜你喜欢
  • 2014-01-23
  • 2014-09-01
  • 2012-07-08
  • 2014-06-24
  • 2013-07-20
  • 2012-01-13
  • 1970-01-01
  • 2022-06-18
  • 2016-04-25
相关资源
最近更新 更多