从__RequestVerificationToken重命名AntiForgeryToken隐藏的输入名称

时间:2013-06-26 20:57:27

标签: asp.net asp.net-mvc security asp.net-mvc-4 csrf

(这样做可以在Web应用程序中混淆ASP.NET MVC框架。)

在Application_Start中通过Helpers重命名了使用静态AntiForgeryConfig类的cookie名称。

Global.asax中

AntiForgeryConfig.CookieName = "Test";

但由于输入名称,使用AntiForgeryToken仍然很明显:

前端

<input name="__RequestVerificationToken" type="hidden" value="blahblahblah" />

可以说MVC带有编码的价值气味,但不确定该怎么做。 (不同的问题,但评论/其他方法无论如何欢迎和赞赏。)

2 个答案:

答案 0 :(得分:7)

在检查CodePlex上的源代码后,似乎该值被硬编码为常量。所以没有简单的方法来改变这个价值。你可以在这里看到:http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.WebPages/Helpers/AntiForgeryConfig.cs

我很惊讶它不可配置。无论如何,似乎你想做的事情是不可能的。

但是,我建议您在Codeplex上创建一个功能请求,并希望他们能够实现它。

注意:如果您想要真正的硬核,您可以随时下载代码并进行修改,但这可能会给您带来的问题比解决的更多。

答案 1 :(得分:3)

this StackOverflow question的答案应该让你开始。

更改输入名称并非易事。 Html.AntiForgeryToken助手和ValidationAntiforgeryToken属性都依赖于输入名称“__RequestVerificationToken”。如果您希望它是其他东西,您需要使用AntiForgery API并创建自己的helper和属性版本,以根据您选择的名称进行验证。