我正在使用ASP.net MVC 2框架编写一个hello world示例,其中包含两个用于用户名和密码字段的文本框。
<form action=/Home/Index method="post">
<input type="text" id="UserName" name="UserName" maxlength="100" tabindex="1" autocomplete="off"/>
<input type="password" id="Password" name="Password" maxlength="15" tabindex="2" autocomplete="off"/>
<input type="submit" value="submit" />
</form>
当我输入用户名字段时,我收到此消息
从客户端检测到潜在危险的Request.Form值(Email =“ 说明:请求验证已检测到潜在危险的客户端输入值,并且请求的处理已中止。此值可能表示尝试破坏应用程序的安全性,例如跨站点脚本攻击。要允许页面覆盖应用程序请求验证设置,请将httpRuntime配置部分中的requestValidationMode属性设置为requestValidationMode =“2.0”。示例:。设置此值后,您可以通过在Page指令或配置部分中设置validateRequest =“false”来禁用请求验证。但是,强烈建议您的应用程序在这种情况下明确检查所有输入。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=153133。
异常详细信息:System.Web.HttpRequestValidationException:从客户端检测到潜在危险的Request.Form值(Email =“
有人请告诉我如何修复它,看来发送请求还没有重定向到我的控制器。 非常感谢!
答案 0 :(得分:1)
内置输入验证因为<
字符而引发异常,这可能会用于跨站点脚本攻击等。因此,它会拦截请求并在任何事情发生之前抛出错误对你的控制器只是为了安全起见。
这不仅限于MVC框架,它是一个整体ASP .NET的东西。有一个很好的问题,有一些非常好的答案here。
答案 1 :(得分:0)
一些指示:
首先尝试像.NET 2.0而不是4.0一样运行网站。你在使用IISExpress吗?如果是这样,有一个开关将CLR设置为版本2.请参见此处:
http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line/
接下来,系统将始终在发布的数据中查找HTML字符,因为这是跨站点脚本攻击的指示。如果您希望这些值包含HTML字符,那么您可以在控制器操作上添加例外,如下所示:
[ValidateInput(false)]
public ActionResult ActionName(ModelType model)
{
....
return View();
}