加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC反伪造令牌如何在Web服务器重启之间存活?

发布时间:2020-12-16 04:24:48 所属栏目:asp.Net 来源:网络整理
导读:我已经使用MVC 5中的ValidateAntiForgeryTokenAttribute实现了防伪保护.它工作正常,但是在未来我们可能会转向更多的“网络农
我已经使用MVC 5中的ValidateAntiForgeryTokenAttribute实现了防伪保护.它工作正常,但是在未来我们可能会转向更多的“网络农场”托管方法.如果我在开发中运行我的应用程序并转到表单,重新启动Web服务器(通过在Visual Studio中重新启动应用程序)然后提交表单,它不会抛出System.Web.Mvc.HttpAntiForgeryException.

我们的应用程序不使用任何其他会话状态.有人可以帮助我理解我的服务器如何从它停止的地方开始?我没有在我的web.config或我能找到的任何其他地方定义machineKey.它与在开发环境中运行有关吗?

我能找到的唯一引用是针对早期版本的MVC,所以我想知道现在是否以不同的方式解决了这个问题.

我很高兴这个功能有效,但我需要了解原因.

解决方法

服务器本身不记得任何东西;它不必.

这里的两件事是:

>表单隐藏输入
>一个cookie

这意味着如果用户访问其上带有AntiForgeryToken的页面,那么服务器将重新启动,这没有问题,因为用户和表单的__RequestVerificationToken仍然是相同的.

实际的安全令牌是一个存储在AntiForgeryToken对象中的哈希键.此对象序列化为Base 64,这是您在查看__RequestVerificationToken的值时看到的内容.由于每次都存储安全密钥,即使服务器重置,值仍然在这些对象内.然后检索并比较密钥以验证令牌.

在此过程中没有解密.对令牌进行反序列化,读取安全密钥然后进行比较.由于安全密钥未加密,而是加密,因此无法解密;只比较.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读