含有HTML碼的欄位寫入資料庫處理方法

 

症狀

'/' 應用程式中發生伺服器錯誤。

--------------------------------------------------------------------------------

 

具有潛在危險 Request.Form 的值已從用戶端 (txtXmlMyGrid3="...whzuSH51Z2OnMbsXbDg==") 偵測到。

描述: 要求驗證偵測到具有潛在危險的用戶端輸入值,對這個要求的處理已經中止。這個值可能表示有人嘗試危害應用程式的安全性,例如跨站台的指令碼處理攻擊。您可以在 Page 指示詞或 組態區段中設定 validateRequest=false 來停用要求驗證。但是我們強列建議您的應用程式應該明確地檢查所有這類的輸入。

 

例外詳細資訊: System.Web.HttpRequestValidationException: 具有潛在危險 Request.Form 的值已從用戶端 (txtXmlMyGrid3="...whzuSH51Z2OnMbsXbDg==") 偵測到。

原因

表單數據回寫資料庫時,.NET Framework會對表單數據檢查,使得表單欄位的值不得有任何的 HTML 代碼或類似HTML代碼。

以避免sql注入攻擊。

 

txtXmlMyGrid3保存的是XML,含特殊字符 <  >XMLHTML都是標記語言,結構相似。所以出現次錯誤。

解決方法

表單數據需回寫資料庫,欄位的值含HTML時,可採用

1 讓程式順利運行

 修改webconfigaspx檔案中的第一行Page 項目

  <configuration>

<system.web>

<pages validateRequest="false" />

</system.web>

</configuration>

  <%@ Page validateRequest="false" %>  

2 加強程式的安全性

 客戶端驗證。用戶輸入時,檢查內容是否符合要求。

 對輸入的內容編碼。常用方法:

    使用HtmlEncode函數

    Dim s As String = Server.HtmlEncode(Me.TextBox1.Text)

 ○在服務器端,檢查用戶輸入的內容。

 ○數據寫入DB時,使用參數。以處理特殊字符和sql注入。

 讀取數據時,解碼。常用方法:

    使用HtmlDecode函數

    Me.TextBox3.Text = Server.HtmlDecode(Me.TextBox1.Text)

posted @ 2010-11-16 22:28  yellowwood  阅读(2558)  评论(0编辑  收藏  举报
Never Give UP