本文就是給過分相信,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 下面的進度條就會看出來,你花了半天寫的“Regex”在短短几十秒就 over 了,哭吧。如果你在服務端沒有驗證的化就很容易將非法資料儲存到伺服器。
個人以為 ms 的驗證控制項,就是為了驗證使用者資料節省使用者的時間(MS 也沒說這東西安全是吧)但卻很容易給初學者一個安全的假想、因為現在有很多用 Asp.Net 的朋友根部一點不懂 js 確切的說還有可能不懂html.
呵呵這也許就是 Microsoft Visual Studio .Net 強大的功能帶來的負面影響吧。
本隱患對老鳥是不會有什麼的,反正我個人是不相信 js 指令碼驗證資料的(包括你自己寫的),在用戶端驗證本來也不可能安全無論如何也要在服務端驗證一下。也多寫不了多少代碼。
測試環境 :Win2000, Microsoft ? .Net Framework 1.1 版
原文地址:http://www.goowind.com/Tech/42/Detail_12303_1/