4

我可以看到在这个 XSS 和其他黑客时代需要验证请求。但这可能有点矫枉过正,就像切断孩子的腿以确保他不会跑到路上被杀。

我们收到投诉称无法设置像<password>. 据我所知,解决此问题的唯一方法是ValidateRequest="false"在一大堆页面上进行设置(例如注册、登录、重置密码)。而在使用.NET 4.0 时,还需要<httpRuntime requestValidationMode="2.0" />针对整个应用程序进行设置。

这真的是唯一的方法吗?有没有办法说只有密码字段不应该被验证?

4

2 回答 2

3

在 asp.net 4 中,您可以创建可能接受此类非典型请求的自定义服务器端请求验证器。写一个很容易,第一个谷歌示例应该让您开始编写自己的示例:

http://jefferytay.wordpress.com/2010/04/15/creating-your-own-custom-request-validation/

于 2012-08-17T11:05:41.027 回答
3

在 ASP.Net MVC 中,您现在可以使用以下选项来禁用请求验证:

禁用控制器操作的请求验证:

[ValidateInput(false)]
ActionResult SomeAction(string validationIgnored){...}

在(视图)模型上的属性上:

[AllowHtml]
string SomeProperty {get; set;}

Request.Unvalidated()在已发布的表单字段上使用:

var rawField = Request.Unvalidated().Form["field"];
于 2013-10-18T05:19:16.820 回答