gpt4 book ai didi

asp.net-mvc - MVC 防伪 token 如何在 Web 服务器重新启动期间继续存在?

转载 作者:行者123 更新时间:2023-12-02 06:22:01 24 4
gpt4 key购买 nike

我已经使用 MVC 5 中的 ValidateAntiForgeryTokenAttribute 实现了防伪保护。它运行良好,但将来我们可能会转向更多的“网络场”托管方法。如果我在开发中运行应用程序并转到表单,重新启动 Web 服务器(通过在 Visual Studio 中重新启动应用程序),然后提交表单,它不会抛出 System.Web.Mvc.HttpAntiForgeryException。

我们的应用程序不使用任何其他 session 状态。有人可以帮助我了解我的服务器如何从中断处继续吗?我没有在 web.config 或我能找到的其他任何地方定义 machineKey。与在开发环境中运行有关系吗?

我能找到的唯一引用资料是 MVC 的早期版本,所以我想知道现在是否可以通过不同的方式解决这个问题。

我很高兴此功能有效,但我需要了解原因。

最佳答案

服务器本身不记得任何东西;没必要。

这里起作用的两件事是:

  • 表单隐藏输入
  • 一 block cookie

这意味着,如果用户访问带有 AntiForgeryToken 的页面,那么服务器重新启动也没有问题,因为用户和表单的 __RequestVerificationToken 仍然是和他们一样。

实际安全 token 是存储在AntiForgeryToken对象内的散列 key 。该对象被序列化为 Base 64这就是您在查看 __RequestVerificationToken 的值时看到的内容。由于每次都会存储安全 key ,因此即使服务器重置,这些值仍然位于这些对象内。然后检索并比较 key 以验证 token 。

此过程中没有解密。 token 被反序列化,安全 key 被读取然后进行比较。由于安全 key 未加密,而是散列,因此无法解密;只是比较。

关于asp.net-mvc - MVC 防伪 token 如何在 Web 服务器重新启动期间继续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com