假设我有一个不使用razor html助手/模型的简单Web表单。
<form id="survey-form" action="@Url.Action("Submit", "Questionnaire")" method="post">
<textarea name="1" form="survey-form">
</form>
上述表单使用
提交$("#survey-form").submit();
在控制器上发布以下测试方法
[HttpPost]
[ValidateAntiForgeryToken]
[ValidateInput(true)]
public ActionResult Submit()
{
NameValueCollection nvc = Request.Form;
return View();
}
<script>alert("xss!")</script>
进入我的文本输入不会被控制器验证。我通常期望抛出"A potentially dangerous Request.Form was detected from the client ..."
异常。
方法不会返回任何异常或消息,并且可以运行。
MSDN文档说
HttpRequest类使用输入验证标志来跟踪是否对通过 Cookie,Form和QueryString属性访问的请求集合执行验证。
由于我发布并处理了具有潜在危险值的已发布表单,我希望我的输入能够得到验证。
我是否仍然可以使用像ValidateInput属性这样的简单MVC助手来验证用户输入而不使用ASP.NET MVC约定? (例如,使用razor html助手和模型等创建表单。)
答案 0 :(得分:2)
我认为你应该将FormCollection
作为Submit
ActionResult的参数。