ASP.Net MVC 的 AntiForgeryToken 方法是不是适用于负载均衡器?

Posted

技术标签:

【中文标题】ASP.Net MVC 的 AntiForgeryToken 方法是不是适用于负载均衡器?【英文标题】:Will ASP.Net MVC's AntiForgeryToken Method work with Load Balancers?ASP.Net MVC 的 AntiForgeryToken 方法是否适用于负载均衡器? 【发布时间】:2011-03-26 01:50:56 【问题描述】:

使用 ASP.Net MVC v2.0,我开始研究在提交处理数据的表单时使用html.AntiForgeryToken() 方法。我可以看到它在 HTML 表单中设置了一个隐藏值,并在会话 cookie 中设置了相同的值。

问题是负载平衡配置中的不同 Web 服务器会在 HTML 表单中创建相同的令牌吗? 如果他们不这样做,那么 cookie 和隐藏表单值将不匹配并且我们会有问题。在我开始在 LB 配置中实际测试它之前,想检查一下是否有人已经有这方面的经验?

谢谢,保罗

【问题讨论】:

【参考方案1】:

如果整个场中的所有机器共享同一个<machineKey>,那么一切都会正常工作。关于如何设置的有lots of resources。还有a tutorial on MSDN。

请注意,<machineKey> 的名称有点误导,因为这实际上是在 ~/Web.config 中为每个应用程序设置的。因此,在您应用的 Web.config 中明确设置 <machineKey>,然后在您的场中部署。

【讨论】:

好的,我应该假设使用了 machineKey。感谢您的回答。 如果你懒得为你的配置文件创建一个机器键行:aspnetresources.com/tools/machineKey nashwan,使用不是您自己生成的 machineKey 很危险。它最终可能会危及您网站的安全性。 我们生成机器密钥并添加到 web.config 文件中。这个问题也发生在一个服务器场景中

以上是关于ASP.Net MVC 的 AntiForgeryToken 方法是不是适用于负载均衡器?的主要内容,如果未能解决你的问题,请参考以下文章

七天学会ASP.NET MVC ——深入理解ASP.NET MVC

Asp.net mvc和asp.net有啥区别?

ASP.NET MVC

七天学会ASP.NET MVC ——ASP.NET MVC 数据传递

ASP.NET MVC 和 Angularjs 与 ASP.NET MVC 和 Reactjs

七天学会ASP.NET MVC ——ASP.Net MVC 数据处理