網(wǎng)站程序的安全是系統(tǒng)開(kāi)發(fā)人員必須考慮的重要因數(shù)之一,因?yàn)檫@涉及到網(wǎng)站的建設(shè)者、網(wǎng)站用戶的諸多安全問(wèn)題,如果不處理好,可能會(huì)給系統(tǒng)的使用者和管理者帶來(lái)嚴(yán)重問(wèn)題。同時(shí)Web應(yīng)用程序的安全解決方案不僅是技術(shù)問(wèn)題,還涉及到管理等多個(gè)方面。但本文僅從四個(gè)最常見(jiàn)的、基本的、可通用的方面加以介紹,并對(duì)每個(gè)安全問(wèn)題從:為什么、怎樣解決、怎樣檢測(cè)三個(gè)層次,以自問(wèn)自答的方式加以通俗易懂的介紹。
其實(shí)此四種技術(shù)開(kāi)發(fā)人員都可能使用過(guò)其中一種或者都使用過(guò),但是有時(shí)我們?cè)陂_(kāi)發(fā)的過(guò)程中并沒(méi)有特意的引起重視,在每一個(gè)細(xì)節(jié)的處理時(shí)未注意網(wǎng)站的安全性,結(jié)果可能導(dǎo)致一些安全漏洞。希望通過(guò)此文使開(kāi)發(fā)人員能夠更加注重系統(tǒng)安全性,尤其測(cè)試人員能夠通過(guò)監(jiān)督去保證系統(tǒng)的安全性,提高產(chǎn)品質(zhì)量。
1.防止SQL注入技術(shù)
為什么必須防止SQL注入?
相當(dāng)大一部分程序員在編寫(xiě)代碼的時(shí)候,沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。新手最容易忽略的問(wèn)題就是SQL注入漏洞的問(wèn)題。用NBSI2.0對(duì)網(wǎng)上的網(wǎng)站掃描,就能發(fā)現(xiàn)部分網(wǎng)站存在SQL注入漏洞,用戶可以提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù)。
怎樣防止SQL注入?
比如URL、表單等提交信息時(shí),通過(guò)一段防止SQL注入的過(guò)濾代碼即可防止出錯(cuò)信息暴露,或者通過(guò)轉(zhuǎn)向,當(dāng)系統(tǒng)出錯(cuò)時(shí)轉(zhuǎn)到一個(gè)提示出錯(cuò)的頁(yè)面等。同時(shí)服務(wù)器權(quán)限設(shè)置是一個(gè)非常重要的方面,由于涉及到服務(wù)器的配置比較多,本文不介紹。
對(duì)于文本型輸入,如果要進(jìn)行檢查,就得根據(jù)字段本身的性質(zhì)進(jìn)行。例如如果是年齡,就得限定必須是數(shù)字,大小必須限定在一個(gè)范圍之間,比如說(shuō)18-120之間。對(duì)于用戶名,應(yīng)該建立一個(gè)集合,這個(gè)集合里存放有被允許的字符,或被禁止的字符。
這里特別需要說(shuō)明的一點(diǎn)是關(guān)于檢查程序的問(wèn)題。目前,程序?qū)斎霐?shù)據(jù)的檢查是在前臺(tái)通過(guò)客戶端腳本完成的,這樣攻擊者很容易就可以繞過(guò)檢查程序。建議采用前后臺(tái)結(jié)合的方法,既可以保證效率,有可以提高安全性。
怎樣測(cè)試程序已防止了SQL注入?
網(wǎng)站用ID來(lái)傳送數(shù)值,如果在ID數(shù)值后面加一個(gè)SQL敏感符號(hào),英文單引號(hào)“’”,打開(kāi)此鏈接,如果出現(xiàn)的是瀏覽器的默認(rèn)出錯(cuò)提示,則需要設(shè)置瀏覽器,使其錯(cuò)誤提示出現(xiàn),方法為打開(kāi)瀏覽器:選項(xiàng)—Internet選項(xiàng)—高級(jí),在設(shè)置里找到顯示友好的HTTP錯(cuò)誤信息勾掉,確認(rèn)后再刷新,如果此時(shí)出現(xiàn)了數(shù)據(jù)庫(kù)出錯(cuò)的提示,如:MicrosoftOLEDBProviderforODBCDrivers錯(cuò)誤'80040e21',那么說(shuō)明本程序并沒(méi)有防止SQL注入,反之如果只出現(xiàn)了如:“提醒您,URL有誤,請(qǐng)與管理員聯(lián)系”之類(lèi)的提示,說(shuō)明SQL已經(jīng)防止了注入。檢測(cè)表單方法如:如提交腳本,在輸入框中輸入特殊字符如:script_等,在此不再敘述,測(cè)試者可以在網(wǎng)上找到很多這樣的方法。
2.驗(yàn)證碼技術(shù)
為什么必須使用驗(yàn)證碼?
普遍的客戶端交互如留言本、會(huì)員注冊(cè)等僅是按照要求輸入內(nèi)容,但網(wǎng)上有很多攻擊軟件,如注冊(cè)機(jī),可以通過(guò)瀏覽WEB,掃描表單,然后在系統(tǒng)上頻繁注冊(cè),頻繁發(fā)送不良信息,造成不良的影響,或者通過(guò)軟件不斷的嘗試,盜取您的密碼。而我們使用通過(guò)使用驗(yàn)證碼技術(shù),使客戶端輸入的信息都必須經(jīng)過(guò)驗(yàn)證,從而可以解決這個(gè)問(wèn)題。
怎樣使用驗(yàn)證碼技術(shù)?
所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素,由用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能。放在會(huì)員注冊(cè)、留言本等所有客戶端提交信息的頁(yè)面,要提交信息,必須要輸入正確的驗(yàn)證碼,從而可以防止不法用戶用軟件頻繁注冊(cè),頻繁發(fā)送不良信息等。
怎樣測(cè)試驗(yàn)證碼是否有效?
必須保證所有客戶端交互部分都輸入驗(yàn)證碼,測(cè)試提交信息時(shí)不輸入驗(yàn)證碼,或者故意輸入錯(cuò)誤的驗(yàn)證碼,如果信息都不能交,說(shuō)明驗(yàn)證碼有效,同時(shí)在驗(yàn)證碼輸入正確下提交信息,如果能提交,說(shuō)明驗(yàn)證碼功能已完善。
3.密碼加密技術(shù)
為什么必須使用密碼加密?
沒(méi)有經(jīng)過(guò)MD5加密的密碼直接顯示在數(shù)據(jù)庫(kù)表中,如果被黑客下載數(shù)據(jù),查出數(shù)據(jù)庫(kù)中的密碼,或者內(nèi)部開(kāi)發(fā)人員通過(guò)數(shù)據(jù)庫(kù)查出用戶的密碼,都對(duì)以后用戶的信息安全造成很大的影響。如果使用MD5加密后的密碼,在數(shù)據(jù)庫(kù)中看到的是一連串經(jīng)過(guò)加密的字符串,不能看到真正的密碼,這樣能更好地保護(hù)網(wǎng)站的安全。雖然黑客也可以使用暴力破解,但是我們?cè)俳Y(jié)合生成圖片驗(yàn)證碼技術(shù),那暴力破解的難度就將大大增強(qiáng)。
怎樣使用MD5加密技術(shù)?
MD5的全稱是Message-DigestAlgorithm5,當(dāng)用戶登錄的時(shí)候,系統(tǒng)把用戶輸入的密碼計(jì)算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進(jìn)行比較,進(jìn)而確定輸入的密碼是否正確。通過(guò)這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。
怎樣測(cè)試密碼已經(jīng)加密?
凡是經(jīng)過(guò)加密的密碼,系統(tǒng)功能上多半有找回密碼的功能,這是表面的測(cè)試,測(cè)試人員可以調(diào)用開(kāi)發(fā)人員的數(shù)據(jù)表,查詢是否經(jīng)過(guò)加密,從而保證系統(tǒng)密碼的安全,一般對(duì)具有大量會(huì)員的商業(yè)性網(wǎng)站必須使用。
4.數(shù)據(jù)備份技術(shù)
為什么必須使用數(shù)據(jù)備份?
當(dāng)網(wǎng)站被黑客攻擊或者其它原因丟失了數(shù)據(jù),可以將備份的數(shù)據(jù)恢復(fù)到原始的數(shù)據(jù),保證了網(wǎng)站在一些人為的、自然的不可避免的條件下的相對(duì)安全性。
怎樣使用數(shù)據(jù)備份?
一般人認(rèn)為數(shù)據(jù)備份就只是數(shù)據(jù)庫(kù)的備份,其實(shí)還有動(dòng)態(tài)變化的圖片、文件等也需要備份,因?yàn)槲募D片一般我們是不寫(xiě)入數(shù)據(jù)庫(kù)里保存的。
一般我們采用數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)定時(shí)備份、定時(shí)自動(dòng)刪除幾天以前的數(shù)據(jù)等,即可完成數(shù)據(jù)的備份功能。而圖片、文件一般是不能自動(dòng)備份,需要手工操作,所以我們必須要定期手工對(duì)網(wǎng)站的圖片、文件進(jìn)行備份操作。
怎樣測(cè)試數(shù)據(jù)已經(jīng)備份?
對(duì)于已經(jīng)做好的網(wǎng)站,數(shù)據(jù)庫(kù)系統(tǒng)都會(huì)自動(dòng)備份到服務(wù)器某個(gè)文件夾下,那么測(cè)試時(shí)我們就需要讓程序開(kāi)發(fā)人員提供可以下載數(shù)據(jù)備份文件的路徑,即可知道是否已經(jīng)做了自動(dòng)備份功能,而自動(dòng)備份間隔時(shí)間的確定,需要根據(jù)網(wǎng)站的更新頻率來(lái)決定。
本文僅介紹四種網(wǎng)站程序的安全的解決方案,以及在此基礎(chǔ)上的檢測(cè)方法,以保證系統(tǒng)產(chǎn)品的安全性,提高產(chǎn)品質(zhì)量,至于具體的詳細(xì)操作,方法有許多種,在此不予介紹。
網(wǎng)站程序的安全還有許多需要介紹的,尤其是服務(wù)器的配置,比如我們必須堅(jiān)持服務(wù)器配置權(quán)限最小化原則等,在此僅從程序上去介紹,此四種網(wǎng)站程序的安全標(biāo)準(zhǔn)適合所有以數(shù)據(jù)庫(kù)為基礎(chǔ)的網(wǎng)站程序,無(wú)論您使用什么樣的開(kāi)發(fā)語(yǔ)言,什么樣的開(kāi)發(fā)平臺(tái),都需要做好以上四個(gè)方面。
|