【发布时间】:2015-02-25 18:15:36
【问题描述】:
我有一个应用程序,我想在其中使用安全令牌实现对 CSRF 的保护,但如果同一用户打开一个新选项卡,我也可以使我的应用程序可供该用户使用。
当用户使用正确的用户名/密码组合对自己进行身份验证时,我将他添加到会话中并返回包含令牌的 cookie。当 cookie 到达时,我从 cookie 中删除令牌并将其存储在全局变量中。对于每个请求,我都会附加令牌并将其与服务器上的令牌进行比较。
问题是当我打开一个新标签时,用户会自动从会话中删除,因为收到的请求不包含正确的令牌。
我了解,如果我将该令牌存储在 cookie 或 localStorage 中,我将能够从另一个选项卡中读取它并且请求将是有效的,但我不确定此实现的安全性,甚至不确定哪个实现更好?使用简单的 XSS,您可以从 cookie/localStorage/global 变量中读取令牌...
是否有任何其他方法可以实现 CSRF 令牌保护并且仍然能够从另一个浏览器选项卡使用我的应用程序?
【问题讨论】:
-
我不只是提交表单,我还在后台用ajax做很多同步方法。
标签: security xss csrf antiforgerytoken