ASP.NET 驗證控件安全隱患
發表于:2007-06-30來源:作者:點擊數:
標簽:
本文就是給過分相信,ms asp.net 驗證控件的,和 js 驗證的朋友的一個忠告!請不要用本方法去黑人。 ASp.net 的全部客戶端驗證控制都是放在一個: %SystemDrive%\Inetpub\wwwroot\aspnet_client\system_web\1_1_4322 目錄下的叫 WebUIValidation.js 的js 里最
本文就是給過分相信,ms asp.net 驗證控件的,和 js 驗證的朋友的一個忠告!請不要用本方法去黑人。
ASp.net 的全部客戶端驗證控制都是放在一個:
%SystemDrive%\Inetpub\wwwroot\aspnet_client\system_web\1_1_4322
目錄下的叫 WebUIValidation.js 的js 里最后的 11_1_4322目錄是版本號不同的 .NET 環境這個也不同.
IE
下載文件的機制是 , 如果
服務器文件沒有改變就不會重新下載,也就是說如果在緩存通過某種方法修改文件而且大小沒有改變的話就可以破解開 js 文件的客戶端限制,應為asp.NET 的這個 WebUIValidation.js 是不會經常更新的(根本就不更新)
1、到你的 ie 緩存目錄 [Internet屬性\常規\設置按鈕] 可以看到
2、把里面的一個叫 Content.IE5 的目錄下的全部目錄清除
3、訪問你要測試的aspx頁(上面一定要有驗證控件的那種)
4、看到網頁后好了 可以在 Content.IE5 搜索 WebUIValidation[1].js(一般都叫這個名字)
5、拿什么打開都行、找 function ValidatorCommonOnSubmit() 函數
改
event.returnValue = !Page_BlockSubmit;
成
event.returnValue = true;;;;;;;;;;;;;;
大小不變就行 (-:
6、保存在打開剛才那個測試頁,點一下提交。
呵呵驗證的文本已經出來了但是仍然提交到了服務器看 ie 下面的進度條就會看出來,你花了半天寫的“正則表達式”在短短幾十秒就 over 了,哭吧。如果你在服務端沒有驗證的化就很容易將非法數據保存到服務器。
個人以為 ms 的驗證控件,就是為了驗證用戶數據節省用戶的時間(MS 也沒說這東西
安全是吧)但卻很容易給初學者一個安全的假想、因為現在有很多用 asp.net 的朋友根部一點不懂 js 確切的說還有可能不懂html.
呵呵這也許就是 Microsoft Visual Studio .NET 強大的功能帶來的負面影響吧。
本隱患對老鳥是不會有什么的,反正我個人是不相信 js 腳本驗證數據的(包括你自己寫的),在客戶端驗證本來也不可能安全無論如何也要在服務端驗證一下。也多寫不了多少代碼。
測試環境 :Win2000, Microsoft ? .NET Framework 1.1 版
原文轉自:http://www.kjueaiud.com