UEditor-從客戶端(editorValue="xxxx")中檢測到有潛在危險的 Request.Form 值。
經常我們需要從客戶端傳一些HTML片段到後端,比如:部落格釋出一篇文章、釋出留言等。
但是你可能會遇到錯誤,類似下圖:
1. 其實錯誤中已經說明的很清楚了,並且告訴瞭解決方法:
從客戶端(txtUEditor="<p>XXX</p>")中檢測到有潛在危險的 Request.Form 值。
說明: 請求驗證過程檢測到有潛在危險的客戶端輸入值,對請求的處理已經中止。該值可能指示存在危及應用程式安全的嘗試,如跨站點指令碼攻擊。若要允許頁面重寫應用程式請求驗證設定,請將 httpRuntime 配置節中的
requestValidationMode 特性設定為 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。設定此值後,可通過在 Page 指令或 <pages> 配置節中設定 validateRequest="false" 禁用請求驗證。但是,在這種情況下,強烈建議應用程式顯式檢查所有輸入。有關更多資訊,請參見 http://
異常詳細資訊: System.Web.HttpRequestValidationException: 從客戶端(txtUEditor="<p>a</p>")中檢測到有潛在危險的 Request.Form 值。
2. 另一種方法是在web.config中的pages節中設定,如:
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但是這種方式並不好,太過暴力,因為它會使整個專案所有的頁面都不會再驗證提交的內容,安全性大大降低。
3. 推薦做法:
給Action加一個Attribute:[ValidateInput(false)],這樣只會讓該頁面不驗證提交的內容,而不會影響到其他頁面。
[HttpPost]
[ValidateInput(false)]
public ActionResult Publish(FormCollection form)
{
return View();
}
我使用的是.Net 4.5、MVC 5。