asp.net-mvc – 为什么@ Html.AntiForgeryToken()在同一个响应中生成不同的标记?
|
单个Razor视图包含多个表单,每个表单都有自己对@ Html.AntiForgeryToken()的调用 <form id="f1">
@Html.AntiForgeryToken()
</form>
<form id="f2">
@Html.AntiForgeryToken()
</form>
据我了解,这两种防伪标记应该是相同的. <form id="f1">
<input name="__RequestVerificationToken" type="hidden" value="duVT4VtiYybun-61lnSY1ol__qBwawnELooyqT5OSrCJrvcHvDs_Nr9GLxNxwvBaI4hUcKZVkm6mDEmH2UqNorHD1FnJbKJQLWe8Su_dhy_nnGGl5GhqqC3yRGzcxbBM0" />
</form>
<form id="f2">
<input name="__RequestVerificationToken" type="hidden" value="ZMISz3IWHU_HCKP4FppDQ5lvzoYhlQGhN1cmzKBPz4OgDzyqSUK3Q1dqvw1uHsb4eNyd9U3AbFcnW8tR7g1QS8Dyhp0tFc-ee1sfDAOqbLCcgd3PDnLCbXx09pnPREaq0" />
</form>
为什么价值不同? 当然它们应该是相同的,因为它们是从服务器发送的相同响应中的? 解决方法Anti-Forgery令牌不会直接进行比较 – 服务器必须先取消保护它并比较内部的受保护数据.拥有不同的受保护令牌并不一定意味着它们包含不同的数据.System.Web.Helpers.AntiXsrf.TokenValidator比较的是解密的AntiForgeryToken实例中的SecurityToken.但是,这些实例还包含AdditionalData字段,UserName字段和ClaimUid字段. 此外,AntiForgeryToken中的SecurityToken直接从AntiForgeryWorker中的(当前有效,否则是新生成的)AntiForgery cookie中复制. 鉴于所有数据都是序列化,加密然后编码,由于令牌之间的AdditionalData之间存在差异,因此受保护令牌可能存在差异,或者可能是由于加密过程中使用的伪随机数(由于我可能使用)可以测试2个完全不同的令牌对同一个cookie有效). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 我需要在ASP.NET Core for Cache中调用Add
- asp.net – ReportViewer阻止其他功能,直到报告查看器的加载
- asp.net-mvc – 使用Ajax.Beginform的RedirectToAction,意外
- asp.net-mvc – Sitecore 6.6中的静态视图渲染
- ASP.NET自定义错误页面HTTP响应
- 如何关闭ASP.NET必需的字段验证器“丢失焦点”行为
- asp.net-mvc-3 – 允许没有找到Html属性[AllowHtml]
- 如何在ASP.NET MVC 4中选择自动完成文本字段值时进行另一个
- ASP.NET基于Ajax的Enter键提交问题分析
- asp.net-mvc – 在自定义Html帮助器中访问模型对象
