很容易设置我们的操作,不是仅仅连接像
这样的属性来验证输入[HttpPost, ValidateInput(false)]
public ActionResult Signup(SignupModel model)
{
...
}
但我想知道,有没有办法只在一个表格领域做到这一点?而不是所有这些都在实际的<form>
或者,我必须使用它,然后担心正确编码所有其他字段?
答案 0 :(得分:0)
您不依靠ValidateInput
来“编码”您的值。它不对值进行编码 - 它只是完全拒绝某些值。即使您使用它,您仍然必须编码用户输入的所有值,并以任何方式显示在网站上。
事实上,正因为如此 - 我自己从未使用过验证。例如,如果我所做的只是依赖于验证,人们将无法在这样的表格中输入一些非常基本的东西,例如尝试显示示例HTML。
但即使是MSDN文档和我读过的每本书都说,那里的ASP.NET验证不可以保护您免受所有可能的恶意输入。基本上,您可以不依赖它来保护您的用户。你仍然必须对你正在显示的值进行编码(你应该只在你显示它们时对它们进行编码,否则你最终会遇到各种各样的显示错误,你们已经对它进行了双重编码)
答案 1 :(得分:0)
使用MVC3,可以通过指定SkipRequestValidation将该属性应用于Model。