[AllowHtml]
需要您添加
<httpRuntime requestValidationMode="2.0"/>
(设置这个值并不意味着你没有得到安全验证,它只是验证模式)。该网站的其他部分将是安全的,您只对视图模型上的特定属性禁用验证。
[ValidateInput(false)]
会工作,但正如您所说,它可能不太安全,因为它禁用所有属性的验证。
我会坚持[AllowHtml]
。
UPDATE:
两个[AllowHtml]
和[ValidateInput(false)]
工作开箱即用的ASP.NET MVC 3没有在web.config中添加<httpRuntime requestValidationMode="2.0"/>
的要求。这是必要的,ASP.NET MVC 2的运行ASP.NET 4.0
在这里有一个例子:
视图模型:
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" />
}
提交表单时不会引发异常。
好吧,那么是否使用允许在没有应用程序抱怨的情况下提交HTML? –
MichaelS
@MichaelS,正如我所说'[AllowHtml]'需要你添加它才能工作。另一种方法是在你的动作中使用'[ValidateInput(false)]'属性。 –
它没有提到要求在下面的教程的XSS部分补充一点:http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&name=mvc3-building-security&mode =实况剪辑= 0&当然= aspdotnet-MVC3-介绍,你可以去这里:http://www.asp.net/mvc为了记录在案,我的模型结合,因为它表明在视频... – MichaelS