1. 程式人生 > >UEditor-從客戶端(editorValue="xxxx")中檢測到有潛在危險的 Request.Form 值。

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://

Go.microsoft.com/fwlink/?LinkId=153133。 

異常詳細資訊: 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。