我已经阅读了很多文章并做了一些自己的测试以及我从测试中看到的内容和源代码(IsCookieTokenValid and GenerateCookieToken - 您可以看到硬编码{{1 ASP.NET Anti Forgery Token是每个会话,而不是每个请求(或POST请求等)。因此,存储在cookie中的令牌在用户会话期间保持不变。每次请求(页面刷新)时,表单上的但标记会更改(它是新的)。
我检查使用旧表单令牌的表单提交是否仍然有效,并且它们是。那么,如果旧的tokes仍然有效并且cookie中的令牌在用户会话期间保持不变,那么每次生成新表单令牌时有什么意义呢?
我没有在代码中看到任何更改此行为的设置并使令牌“一次性”。唯一的选择或解决方案是删除cookie,这将强制生成新的cookie。正确?还有其他想法吗?
答案 0 :(得分:0)
我最终修改了ASP.NET MVC库,并将GenerateOnetimeToken
设置为AntiForgeryConfig
,以便能够为每个页面请求生成新的令牌对(cookie和表单令牌)(AntiForgeryToken()帮助程序调用)。