最近在用ASP.NET MVC 3,在通過TinyMCE HTML編輯器,向服務器端輸入HTML代碼時,收到了下面這個錯誤信息:
異常詳細信息: System.Web.HttpRequestValidationException: 從客戶端(test="<a>adfasdf</a>")中檢測到有潛在危險的 Request.Form 值。
很明顯,這是ASP.NET為了阻止跨站腳本攻擊所實現的防御措施,然而在我的情況下,我的確需要ASP.NET臨時關閉這個檢查機制,因為這個時候我需要保存原始的HTML文本。在網上搜了一下,發現很多人的解決方案有點粗暴,要麼是直接將整個站點的HTML跨站攻擊檢測機制禁止掉:
安全一點的,也是把整個頁面的檢測機制禁止掉—即通過在webform頁面的Page指令禁用請求驗證,或在MVC的Controller上加上[ValidateInput(false)]屬性。下面這個razor語法的頁面就可以讓你重現這個問題:

代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">