我收到错误
从客户端
检测到潜在危险的Request.Form值
当我部署我的应用程序时(当我通过localhost运行时不会发生错误)。
提交表单时会出现这种情况,因为其中一个字段包含HTML。我在模型中的属性周围添加了[AllowHtml],对应于有问题的表单字段,但这似乎不起作用。
我宁愿不在动作方法上使用[ValidateInput(false)],原因很明显,无论如何,这似乎也不起作用。
我还需要做其他任何配置吗?我已经读过添加
<httpRuntime requestValidationMode="2.0"/>
到web配置文件可以解决它,但我再次不想添加它,因为我仍然需要对我的应用程序的其他部分进行安全验证。
有什么想法吗?
答案 0 :(得分:8)
[AllowHtml]
要求您添加<httpRuntime requestValidationMode="2.0"/>
(设置此值并不意味着您没有获得安全验证,它只是验证模式)。网站的其他部分将是安全的,您只能对视图模型上的特定属性禁用验证。
击>
[ValidateInput(false)]
可以正常工作,但正如您所说,它可能不太安全,因为它会禁用所有属性的验证。
我会坚持使用[AllowHtml]
。
更新:
{MV} 3中[AllowHtml]
和[ValidateInput(false)]
开箱即用,无需在web.config中添加<httpRuntime requestValidationMode="2.0"/>
。这在ASP.NET 4.0下运行的ASP.NET MVC 2中是必需的
以下是一个例子:
查看型号:
public class MyViewModel
{
[AllowHtml]
public string Text { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Text = "<html/>"
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
查看:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.TextAreaFor(x => x.Text)
<input type="submit" value="OK" />
}
提交表单时不会抛出任何异常。