從客戶端中檢測到有潛在危險值的解決辦法

問題描述:

針對"http://...?name=&age=”這樣的請求,使用Request.Form和Request.QueryString方法接收數據,會出現:從客戶端(....)中檢測到有潛在危險值...的錯誤提示。

問題原因:

由於在asp.net中,Request提交時出現有html代碼或javascript等字符串時,程序系統會認爲其具有潛在危險的值。環境配置會報出“從客戶端 中檢測到有潛在危險值”這樣的Error。

解決方案:

方案1:

(1)在配置文件中加入:

<httpRuntime requestValidationMode="2.0"/>

(2)在.aspx頁面中加入:

<%@ Page ValidateRequest="false"

方案2:

原因是所傳值含有特殊危險符號,那麼可以在傳前,利用HttpUtility.HtmlEncode(string)方法,對字符串進行編碼,這樣就會將危險字符轉義爲普通的字符。如string param=Server.HtmlEncode(str);

建議使用方案1。

在方案2總,如果傳遞的內容包括&等這樣的特殊符號,傳輸數據會丟失。

下面針對傳輸特殊字符做下總結:

特殊字符  HttpUtility.UrlEncode HttpUtility.HtmlEncode
= %3d =
< %3c &lt;
& %26 &amp

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章