[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