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