对于我的CSRF令牌函数(它更改每个请求的令牌),我有一个小问题。下面是我的问题的场景:
当我打开2页(使用相同的CSRF令牌)时,当我打开第一页并在那里提交表单时,第二页的表单不起作用(因为CSRF令牌的值被更改)。如果你从用户的体验来看待它,它会留下一个不好的味道,所以我需要改变它。
我的问题是,如何使我的CSRF令牌功能,工作在多选项卡浏览,同时不影响安全性和更好的用户体验?因为我希望他们有一个更好的用户体验,而不影响他们的浏览安全。
发布于 2016-09-18 05:59:29
每个会话使用一个CSRF令牌(而不是每个请求或每个用户)。例如,CSRF令牌可以是纯文本会话ID,也可以是会话密钥的加密或安全散列(例如HMAC)版本。也可以将CSRF令牌存储为与会话密钥关联的会话变量。这些都是共同的选择。
如果您想知道这是否会使您的站点更不安全,请阅读这篇文章以获得保证。
如果您碰巧使用的是ASP.NET框架,则只需将Page.ViewStateUserKey设置为会话ID即可。
发布于 2016-09-16 07:09:19
我们需要更多细节。你在使用框架吗?
此外,如果您要为每个请求创建一个令牌,为什么两个选项卡具有相同的一个?这和你说的有点矛盾。
或者我误解了,您的意思是一次只有一个csrf令牌“活动”。在这种情况下,修复将很容易,允许多个CSRF令牌同时有效(通过保存发送服务器端的列表)。这样,两个不同的制表符有两个不同的标记,它们都是有效的。
https://security.stackexchange.com/questions/136925
复制相似问题