demoshop

demo, trying to be the best_

在很多時候我們都會在頁面上放置 HTML 編輯器 來讓使用者輸入一些資訊,但是 ASP.NET 內建就會阻擋在 Request 時丟出 HTML Tag 已避免一些跨網站或是指令碼攻擊,但是今天在 ASP.NET MVC 使用時會發生了怪事。

在 ASP.NET 時代,只需要在 頁面上得 Page 加上validateRequest="false" 就可以取消掉該頁面的驗證,但是 demo 在 ASP.NET MVC 框架下中使用時發現它並不會關閉驗證,想了一下在ASP.NET MVC 框架內它根本還沒跑到View 那我在View中設定 validateRequest="false" 當然是沒P用,查了手邊的文件都沒看到類似的說明 (我手邊也只有 RC1 和 RC2 的Release Notes而已),於是上就微軟討論區查了,果不其然這種看起來就很普遍的問題,早就已經有人問過了。


解決方式超簡單,只需要在該Action附加上validateInput的屬性就好啦

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

就這樣就解決啦,但是demo滿好奇的是為什麼他們會知道要加這 Attribute 因為 Google 出來的結果感覺這是在RC1才加入的,可是 RC1 的 Release Notes 上我卻沒看到,真是奇了。

 

回應討論