常用縮寫(xiě)詞
HTML:超文本標(biāo)記語(yǔ)言
SQL:結(jié)構(gòu)化查詢(xún)語(yǔ)言
URL:統(tǒng)一資源定位器
要想編寫(xiě)出安全的代碼,您必須首先獲悉您的程序所面臨的威脅有哪些。本文考察了一些非常流行的漏洞,諸如跨站點(diǎn)腳本攻擊和SQL注射,同時(shí)還介紹了可以一些安全工具。這些工具不僅可以幫我們保護(hù)自己的網(wǎng)站,還能幫我們保護(hù)數(shù)據(jù)和網(wǎng)絡(luò)。本文無(wú)法替代安全專(zhuān)業(yè)人員,也不會(huì)教授艱深的安全技巧。相反地,我們主要介紹如何發(fā)現(xiàn)代碼中潛在的漏洞,以及如何修復(fù)它們。
常見(jiàn)安全漏洞
開(kāi)始之前,我們需要對(duì)要查找的漏洞本身有所了解。我們先來(lái)看一下最流行的一個(gè)漏洞,即跨站點(diǎn)腳本攻擊(XSS)。XSS是網(wǎng)站被注入惡意腳本而導(dǎo)致的,舉例來(lái)說(shuō),Mallory編寫(xiě)了一段腳本,它能夠?qū)⒂脩?hù)轉(zhuǎn)至一個(gè)受信任的網(wǎng)站上,而該站點(diǎn)則是由Alice創(chuàng)建的。 Mallory把這個(gè)腳本插入一個(gè)流行的論壇上后,Bob在論壇中看到并點(diǎn)擊了這個(gè)鏈接,并在A(yíng)lice的站點(diǎn)上創(chuàng)建了一個(gè)帳號(hào)。 這時(shí),這個(gè)腳本利用Alice的網(wǎng)站上的一個(gè)XSS漏洞將Bob的cookie發(fā)送給了Mallory,這樣一來(lái),Mallory就可以冒充Bob并竊取其信息了。
SQL注入是第二大流行的安全漏洞,這主要是拜網(wǎng)站對(duì)數(shù)據(jù)庫(kù)的依賴(lài)性日益增強(qiáng)所賜。SQL注入實(shí)際上非常簡(jiǎn)單:發(fā)現(xiàn)一個(gè)連接數(shù)據(jù)庫(kù)的網(wǎng)站后,心懷叵測(cè)的黑客可以執(zhí)行一個(gè)SQL查詢(xún)來(lái)實(shí)現(xiàn)開(kāi)發(fā)人員始料未及的功能:繞過(guò)身份驗(yàn)證或者操縱數(shù)據(jù)。這種類(lèi)型的攻擊,正是Albert Gonzalez竊取13000萬(wàn)信用卡號(hào)的作案手法。在發(fā)動(dòng)SQL注入攻擊過(guò)程中,Mallory發(fā)現(xiàn)了Alice用于銷(xiāo)售電子產(chǎn)品的網(wǎng)站。這次,Mallory并沒(méi)有像平常那樣輸入用戶(hù)名和密碼,而是在用戶(hù)名字段中輸入了‘) OR 1=1- 。雖然她它的輸入中包含了連字符(-),但是其它部分就無(wú)所謂了,因?yàn)?=1總是成立,所以她將成功登錄?,F(xiàn)在,她可以操縱數(shù)據(jù)庫(kù)以竊取Bob的客戶(hù)信息。這個(gè)例子以最簡(jiǎn)單的方式對(duì)SQL注入進(jìn)行了演示,您可以從中看到利用這種攻擊對(duì)于攻擊者而言是多么簡(jiǎn)單。
如果沒(méi)有專(zhuān)業(yè)的安全人員團(tuán)隊(duì),普通的Web開(kāi)發(fā)者看起來(lái)很難跟這些漏洞相抗衡。幸運(yùn)的是,事實(shí)并非如此。許多工具可以幫助我們查找網(wǎng)站中潛在的漏洞,如果據(jù)此采取必要的措施的話(huà),我們就能夠有效的防御這些漏洞導(dǎo)致的攻擊。為了幫我們識(shí)別潛在危險(xiǎn),像WebScarab 和Paros 之類(lèi)的工具能夠捕捉瀏覽器和服務(wù)器之間的會(huì)話(huà),并能爬行網(wǎng)站。掌握這些信息后,您就可以檢測(cè)這些漏洞并采取防御措施了。
WebScarab
OWASP開(kāi)發(fā)的WebScarab是分析瀏覽器請(qǐng)求和服務(wù)器應(yīng)答的首選代理。WebScarab除了提供數(shù)據(jù)包分析功能外,還可以對(duì)站點(diǎn)進(jìn)行Fuzz測(cè)試,以尋找上述的漏洞。