防伪标记不会被重复使用

时间:2013-09-03 09:17:04

标签: asp.net-mvc antiforgerytoken

当我阅读ASP.NET MVC实现的防伪系统生成可以在同一会话中重用的令牌时,我的问题是为什么每次在我的应用程序中生成新表单时此标记都会更改?我在谈论隐藏的输入字段,而不是关于cookie值。

感谢。

2 个答案:

答案 0 :(得分:1)

没有。令牌不会被重复使用。

每次页面刷新都会在Form输入中生成一个新值(以及Cookie,如果它无效或不存在)。提交后,服务器将尝试将表单值与Cookie值匹配。

答案 1 :(得分:-1)

取自专业的ASP.NET.MVC 3书

  

令牌验证ASP.NET MVC包含一种防止CSRF的好方法   攻击,它的工作原理是验证用户是谁   提交数据到您的网站是如此自愿。最简单的方法   这样做是为每个表单请求嵌入一个隐藏的输入   包含一个唯一的值。您可以使用HTML帮助程序来执行此操作   包括每种形式:

<form action=”/account/register”
> method=”post”> <@Html.AntiForgeryToken()> … </form>
  

Html.AntiForgeryToken将输出加密值作为隐藏   输入:此值   将匹配另一个存储为会话cookie的值   用户的浏览器。发布表单时,将匹配这些值   使用ActionFilter:

[ValidateAntiforgeryToken] public ActionResult
> Register(…)