2013-07-30 117 views
0

What's New in ASP.NET 4.5 and Visual Studio 2012顯示了一個內置的AntiXSS庫,ASP MVC 4.5 AntiXSS庫+允許HTML內容

<httpRuntime ... 
     encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

@Html.TextBoxFor(x => x.Name, new { @class = "testClass", maxlength = "50" }) 

它的強大,你

"A potentially dangerous Request.Form value was detected from the client (Name=\"<b> test </b>\")."" 

任何潛在危險的檢測,

BUT

我該怎麼辦,如果我想要這種或保護b還允許一些HTML內容的WYSIWYG HTML編輯器? (例如論壇帖子)

+0

這是錯誤的,我們常見的有請求驗證見的類型。您是否確定了您遇到的問題是使用AntiXss庫而不是內置的標準請求驗證?具有諷刺意味的是,請求驗證部分位於您發送的鏈接的AntiXSS庫部分之上。您還可以查看http://msdn.microsoft.com/en-us/library/hh882339.aspx獲取有關請求驗證的信息。 –

+2

我認爲這是.NET保護措施,而不是Anti-XSS庫。看看http://stackoverflow.com/questions/81991/a-potentially-dangerous-request-form-value-was-detected-from-the-client –

回答

3

由於@NickBork在他的comment中提到,這種錯誤來自ASP.NET請求驗證,它們與AntyXSS庫無關。 AntiXSS庫不會保護您的應用程序免受危險輸入。它可以幫助你,但你必須明確地使用它。

要跳過請求驗證的一些屬性,你可以使用AllowHtmlAttribute

// model 
public class MyModel 
{ 
    [AllowHtml] 
    public string HtmlContent { get; set; } 
} 

// controller 
public class HomeController : Controller 
{ 

    [HttpGet] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(MyModel myModel) 
    { 
     // use myModel.HtmlContent 
     return View(myModel); 
    } 
} 
@* view *@ 
@model MyModel 

<form action="@Url.Action("Index")" method="POST"> 
    @Html.TextBoxFor(m => m.HtmlContent) 
    <button type="submit">Submit</button> 
</form> 


@if (Model != null) 
{ 
    <div> 
    @Html.Raw(Model.HtmlContent) 
    </div> 
}