從客戶端中檢測到有潛在危險的 Request.Form 值

      在頁面中我添加一個dropdownlist,裏面添加的數據總會報錯:從客戶端中檢測到有潛在危險的 Request.Form 值。

  這是爲什麼呢?

  其實我已經說的很明白了,是我dropdownlist裏面的值有問題,asp.net 中的請求驗證特性提供了一種保護措置用來防止xss攻擊,並且在asp.net中,這種請求驗證是默認啓動的。

  科普一下,根據百度百科介紹:XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由於被黑客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣爲人知。對於跨站腳本攻擊黑客界共識是:跨站腳本攻擊是新型的“緩衝區溢出攻擊“,而JavaScript是新型的“ShellCode”。

       那麼,該怎麼解決這個問題呢:
在.net2.0的情況下:

        如果只是一個頁面有這個問題,我們可以在頁面中加入:ValidateRequest="false",ValidateRequest爲false,是指在頁面提交時驗證關閉,代碼如下

<%@ Page ValidateRequest="false"  Language="C#" AutoEventWireup="true" CodeFile="htl.aspx.cs" Inherits="htl" %> 
         如果是很多頁面的話,就可以在web.config中修改:
<system.web> 
      <pages validateRequest="false" >   
      </pages>   
  </system.web>

在.net4.0情況下:

  4.0模式默認情況下,任何 HTTP 請求都會啓用請求驗證,也就是說不光是網頁,還包括Session、 Cookie 等。強制啓用,不管 validateRequest 爲何值,所以只是單純的修改validateRequest 並沒有什麼作用,我們就需要設置還2.0僅對網頁啓用請求驗證

然後以2.0的修改方法進行修改,代碼如下:

 <system.web>
      <httpRuntime requestValidationMode="2.0" />
      <pages validateRequest="false"></pages>
  </system.web>

但是,這些方法只是關閉了對XSS防禦,真正的前端開發需要另外編寫程序進行XSS防禦



發佈了42 篇原創文章 · 獲贊 19 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章