2010-11-26 59 views
0

可以很容易地设定我们的行动不验证输入刚刚挂钩像我们可以只为一个元素设置ValidatInput(false)吗?

[HttpPost, ValidateInput(false)] 
public ActionResult Signup(SignupModel model) 
{ 
    ... 
} 

的属性,但我想知道,有没有办法,只在短短的一个表单域做到这一点?而不是所有的实际<form>

或者,我不得不使用这个,然后担心编码适当的所有其他领域?

回答

0

您应该不是依靠ValidateInput'编码'您的值。它不会对值进行编码 - 它只是完全拒绝一些值。即使你使用它,仍然必须编码用户输入并以任何方式显示在站点上的所有值

事实上,正因为如此 - 我从未使用过这种验证。例如,如果我所做的只是依赖验证,那么人们就不能像这样的形式输入一些非常基本的东西,比如试图展示示例HTML。

但即使MSDN文档和我读过的每本书都表示,ASP.NET验证确实有而不是可以保护您免受任何可能的恶意输入。所以基本上,你可以不是依靠它来保护你的用户。您仍然必须对您显示的值进行编码(并且您应该只在显示它们时对其进行编码,否则最终会出现各种显示错误,因此您会对双重编码的东西进行编码)

+0

事情是,我只需要在表单的一个字段中接受html代码,我不知道要采取什么样的路径。 – balexandre 2010-11-26 00:32:28

+0

不要在任何地方使用“验证”;不管你是否使用内置验证,你仍然*必须对其他字段进行编码。但只要确保你在为其他字段编码。 – 2010-11-26 00:35:17

0

使用MVC3属性可以通过指定SkipRequestValidation应用于Model。

相关问题