[ASP.net]4.0關閉 ValidateRequest 功能

ASP.NET 4.0關閉 ValidateRequest 功能

為了有效防止XSS攻擊,ASP.net 自2.0後就有所謂的 ValidateRequest 設計,在2.0中可以個別針對每個aspx(網頁層級)的page標籤中設定,如下:

<%@ Page Language="C#" AutoEventWireup="true" C
odeFile="index.aspx.cs" Inherits="index" validaterequest=" true | false"%>

預設為true,當資料無法存取時如Youtube的嵌入碼..等,我們就必須針對個別網頁去關閉驗證功能以利程式進行。

也可以從Web.Config中一次修改:

 

<configuration>
  <system.web>
    <pages validateRequest="false" />
  </system.web>
</configuration>


到了ASP.NET 4.0時,ValidateRequest的防護也全面升級了,從原本的網頁層級升級到應用程式層級,也因此,在所有的Request之前就先檢查XSS攻擊,如此一來,我們在aspx中的再怎麼修改也沒用了,換個方式用Web.Config如何?也不行,最快的方式是將httpRuntime上的驗證方式設回2.0去執行 :

在<system.web>中加入 <pages validateRequest="false" /> 即可。

但改回2.0後防護即變得不夠完全,使用前請三思,自訂驗證項是個很好的方法,但筆者尚未實際寫過這一部份,在此不多作討論。



 

 

ps:天阿,剛打完後發現有錯字回來修改,就整篇不見...少了寫第一次時的心情,所以這篇簡短又比較不順,見諒見諒,以後記得先備份啊!!!淚奔~。

分享


站作網站設計工作室 SiteMak Studio
Shinyo Ho 
Founder / Developer
email:shinyo.her@gmail.com|web:www.sitemak.com.tw