網(wǎng)站程序的安全是系統(tǒng)開發(fā)人員必須考慮的重要因數(shù)之一,因?yàn)檫@涉及到網(wǎng)站的建設(shè)者、網(wǎng)站用戶的諸多安全問題,如果不處理好,可能會給系統(tǒng)的使用者和管理者帶來嚴(yán)重問題。同時Web應(yīng)用程序的安全解決方案不僅是技術(shù)問題,還涉及到管理等多個方面。
技術(shù)開發(fā)人員都可能使用過其中一種或者都使用過,但是有時我們在開發(fā)的過程中并沒有特意的引起重視,在每一個細(xì)節(jié)的處理時未注意網(wǎng)站的安全性,結(jié)果可能導(dǎo)致一些安全漏洞。希望通過此文使開發(fā)人員能夠更加注重系統(tǒng)安全性,尤其測試人員能夠通過監(jiān)督去保證系統(tǒng)的安全性,提高產(chǎn)品質(zhì)量。
1防止SQL注入技術(shù)
為什么必須防止SQL注入?
相當(dāng)大一部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。新手最容易忽略的問題就是SQL注入漏洞的問題。用NBSI2.0對網(wǎng)上的網(wǎng)站掃描,就能發(fā)現(xiàn)部分網(wǎng)站存在SQL注入漏洞,用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù)。
怎樣防止SQL注入?
比如URL、表單等提交信息時,通過一段防止SQL注入的過濾代碼即可防止出錯信息暴露,或者通過轉(zhuǎn)向,當(dāng)系統(tǒng)出錯時轉(zhuǎn)到一個提示出錯的頁面等。同時服務(wù)器權(quán)限設(shè)置是一個非常重要的方面,由于涉及到服務(wù)器的配置比較多,本文不介紹。
對于文本型輸入,如果要進(jìn)行檢查,就得根據(jù)字段本身的性質(zhì)進(jìn)行。例如如果是年齡,就得限定必須是數(shù)字,大小必須限定在一個范圍之間,比如說18-120之間。對于用戶名,應(yīng)該建立一個集合,這個集電子商務(wù)資料庫$"9.#+.+4&;7,9合里存放有被允許的字符,或被禁止的字符。
這里特別需要說明的一點(diǎn)是關(guān)于檢查程序的問題。目前,程序?qū)斎霐?shù)據(jù)的檢查是在前臺通過客戶端腳本完成的,這樣攻擊者很容易就可以繞過檢查程序。建議采用前后臺結(jié)合的方法,既可以保證效率,有可以提高安全性。