具有母版页的视图上的多个AntiForgery标记

时间:2010-02-10 21:13:52

标签: asp.net-mvc security

是否有人必须在母版的子视图上处理多个AntiForgeryTokens?我正在考虑的方案如下:

  • 该视图包含一个表单,其中AntiForgeryToken呈现为隐藏字段。
  • 该视图包含一个包含另一个AJAX提交表单的母版页。

这里的问题是我需要在表单中封装隐藏字段,同时,我需要在母版页中的AJAX提交表单上呈现另一个令牌以进行提交。我不能假设令牌将在子页面中呈现,因为子页面上可能没有表单。

我的第一个想法是为所有帖子使用的整个页面呈现单个全局AntiForgeryToken,但随后隐藏输入字段将位于表单之外,表单将不会发布标记。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:8)

应该可以在每个表单中单独呈现Html.AntiForgeryToken()。运行时的设计考虑了这种情况。第一次调用AntiForgeryToken()会设置一个标记,说“我已设置令牌,对此请求的任何其他调用都应使用相同的令牌值。”