ASP中伺服器端安全性驗證研究(初級)

2021-04-01 10:58:49 字數 1939 閱讀 8382

黑客攻擊乙個**,最快捷的手段,往往是利用cgi的指令碼漏洞,注入資料庫語句,直接進入**,效果相當好。如果乙個**登入被攻破,裡面的資料將一覽無遺,對存有重要資料的**來說,這將是毀滅性的。

asp已在網上流行了很久,但是安全性仍然很差,現在琴客根椐自已的實踐,談談如何對登陸表單進行安全驗證,很多初學者喜歡用客戶端進行驗證,這對稍懂網頁設計知識的人來說,簡直形同虛設,所以我們要在伺服器端進行驗證,以下方法雖然是針對asp指令碼的,但實際對大多數互動式指令碼都適用的,只是asp最為突出罷了。

1、對填寫格式進行驗證。

要求數字的,就要驗證所填內容是否是數字;電子郵件格式的,就有電子郵件的填寫常規。要求必填項的,要驗證是否為空。這是很基本的安全性驗證,或者說有點安全性的指令碼,但實際上仍然是不安全的。

2、對字元長度進行限制,不能太短,也不能太長。

如果不限字元填寫長度,輕者影響**美觀,重者將會對**造成不可預見的安全隱患,有時會造成系統的崩潰,這有點象溢位攻擊的味道了。如果填寫者填寫非常長的內容,超出伺服器所能處理的長度,這就非常危險了。對於有資料庫支援的**,特別是access小資料庫,超出字段長度,就會返回出錯資訊,而這些出錯資訊,往往暴露出資料庫路徑,黑客就會利用資料庫盜取資料。結果是不可想象的。

利用len函式計算填寫長度,超出預定長度,伺服器停止執行(response.end),或者只取前面的字元。

3、提交內容中禁用特殊字元,html、dhtml、js、vb指令碼,並防止資料庫注入

因為這些指令碼和字元,往往是asp指令碼可執行的字元,這樣提交表單的同時,伺服器執行提交的文字,非常危險!

在以前一些論壇和聊天室裡,惡作劇者會使用html和js**,讓訪問者電腦上開無數個視窗,導致崩潰!還有可能盜取密碼,執行"混客絕情炸彈"類似的程式,你說可不可怕?呵呵。。。好在這只是客戶端受攻擊,最可怕的還是服務端的安全性。

黑客經常會用特殊字元的漏洞,進入**。乙個典型的例子就是使用[=name" or "name<>123]這種語法騙過伺服器,讓資料庫執行sql語句。

我們要禁止訪客使用以上字元,用去除,替換等方法解決,很多論壇使用ubb**,這是不錯的選擇。

4、限制錯誤登入的次數。這種方法琴客稱之為"蝸牛式保護系統"

這是銀行、電信等部門最慣用的安全防範手法了。由於歷史的原因,這些部門常常用小於6位數的數字做密碼,這在網路時代簡真是太脆弱了,隨便一台電腦,只要很短的時間就能跑完所有密碼。所以他們使用了"蝸牛式保護系統"的方法。只要輸錯3次密碼,卡就不能提款了,只要輸錯3次密碼,手機的sim卡自動鎖住。我們在設計asp互動**時,可以使用這種方式。只要超過限定的次數,相關帳號就不能使用。防止攻擊者使用軟體跑密碼,進入**。

5、使用隨機附加碼驗證

這種方法主要也是防止跑密碼,將密碼驗證多了乙個動態密碼驗證。使用rnd函式生成,並用session驗證,這樣才會安全,不要使用hidden表單。現在這種方法驗證密碼的**越來越多了。

6、限制操作的時間

有時操作者進入**以後,忘了關視窗,這樣就會被其他操作者非法進入系統。使用操作時間限制,可以防止這種情況,時間超時後,**各項服務就終止了。在asp中使用session實現。

7、使用訪問來路驗證

這樣可以防止防問者在自已**或電腦上生成session騙過安全驗證。非正常頁面的請求將不被執行。

8、進行日誌管理,記錄操作者的操作。

記錄操作者的操作,這樣可以隨時修補漏洞。

9、對資料庫、路徑、指令碼加密,禁用不安全元件,修補系統安全漏洞。

這雖然不是提交表單的安全問題,便是與安全漏洞顯然是密不可分的。這種方法很多,不再祥述。

10、防止後退或瀏覽器快取網頁內容。

與第6點類似,防止操作瀏覽的內容被非法操作者通過後退檢視**的內容。可以設定成每次後退重新讀取伺服器。

11、不要在網上鏈結重要內容。

有些搜尋引擎機械人會將重要頁面快取在引擎中,這樣就等於向全世界的訪客敞著大門。不過現在一些引擎類似黑客程式一樣從伺服器"偷取"資訊,這樣防不勝防,由此也出現了防止被搜尋引擎搜到的公司提供這類的服務。

thinkPHP中伺服器端的驗證

class usermodel extends model 使用者名稱必須6個字母以上 0,regex 1 regex 正則驗證,定義的驗證規則是乙個正規表示式 預設 array repassword password 確認密碼不正確 0,confirm protected functionchec...

伺服器端資料驗證

現在有乙個方法實現頁面所有textbox 的資料驗證,public static bool checkallitems page page,string strfrmname page 傳過來的 page strfrmname 是頁面上面的 form 的 id 這個方法會檢測畫面上面所有的 text...

關於Ajax伺服器端驗證

對於這個問題以前卡了幾次,也不知道自己是怎麼處理的。伺服器端驗證往往有乙個延時,也就是專業上所說的非同步操作。如果在提交表單需要獲取伺服器給的返回值來判斷是否需要提交就不是那麼容易了。因為 ajax 的延時性導致所獲取的返回值並非伺服器端的返回值。因為這一步執行的時候外圍程式可能已經執行完返回了。這...