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 MVC 数据传递