每个请求都有AntiForgeryToken更改

我正在使用AntiForgeryToken帮助方法。 根据我对AntiForgeryToken的理解,它是会话库,因此每个用户具有相同的令牌,但另一个用户将拥有不同的令牌(前提是您对所有表单使用相同的盐)。 我的“问题”是AntiForgeryToken为具有相同salt的同一用户生成不同的令牌。 例如 …

位指示

 public ActionResult Test() { return View(); } 

视图

 @using (Html.BeginForm()) { @Html.AntiForgeryToken("Salty!") } 

输出请求#1

  

输出请求#2

  

对于具有相同盐的相同会话,键是不同的。 我对CRSF保护有根本的误解吗? 或者这是一个新function?

反XSRF令牌的工作原理是将相同的随机值加密到会话cookie和表单上。 只有当您从生成的表单发布post时,才会提交会话cookie。

此方法也适用于服务器场(在负载平衡方案中),其中所有服务器共享加密密钥。 validation仅通过比较发布的表单数据中的解密值和发布的会话cookie中的解密值来工作。 这称为双提交cookie方法。

因此,每个请求获得不同的值是很正常的。 这是一篇关于ASP.NET MVC XSRF令牌的好文章 。