胡志鵬鄧 莉
(1.四川航天職業(yè)技術(shù)學(xué)院 四川成都 610100;2.成都龍泉第六中學(xué) 四川成都 610100)
WEB編程中腳本漏洞的分析與防范
胡志鵬1鄧 莉2
(1.四川航天職業(yè)技術(shù)學(xué)院 四川成都 610100;2.成都龍泉第六中學(xué) 四川成都 610100)
腳本在網(wǎng)絡(luò)中的應(yīng)用,可以說是隨處可見,其中ASP,PHP,JSP,ASPX等常見的腳本語言更是被廣泛應(yīng)用于各類基于WEB服務(wù)的系統(tǒng)中。而由于程序員在設(shè)計(jì)WEB程序的時(shí)候不注意到腳本漏洞,給不速之客帶來了方便,可以說腳本漏洞的攻擊對于他們來說是永具生命力的攻擊手段。網(wǎng)絡(luò)安全是每一個(gè)計(jì)算機(jī)用戶和WEB程序員必須面對的問題,本文針對WEB編程中存在的幾個(gè)典型腳本漏洞進(jìn)行了實(shí)例分析,并給出適當(dāng)?shù)姆婪洞胧?,期望引起WEB程序員對網(wǎng)絡(luò)安全的重視。
WEB 編程 腳本漏洞 黑客技術(shù)
其實(shí)腳本是介于HTML與Pascal、C++、Java、VB、C#等編程語言之間的一種語言。它是以“操作系統(tǒng)+腳本引擎(腳本解釋器)+腳本語言”的工作方式,要使腳本語言在服務(wù)器端上正常工作,就需要在服務(wù)器端安裝腳本引擎,如ASP安裝IIS,JSP安裝JDK+RESIN,ASPX安裝IIS+.NET FRAME等,腳本引擎提供腳本在主機(jī)的環(huán)境,并對腳本程序中的腳本命令進(jìn)行解釋。當(dāng)解釋完畢后,腳本引擎把執(zhí)行結(jié)果以HTML的語言格式發(fā)送給客戶端。[1]
根據(jù)上面的我們知道客戶端的瀏覽器時(shí)可以變量或者命令的形式向腳本程序提交數(shù)據(jù)和指令的,這就是說我們在編寫腳本程序代碼的時(shí)候應(yīng)該避免出現(xiàn)腳本程序處理數(shù)據(jù)和指令存在的漏洞和缺陷,根據(jù)本人在編寫程序中遇到的漏洞一些問題,總結(jié)如下:
1.弱字符過濾
在實(shí)際WEB編程的過程中,我們需要對表單提交的數(shù)據(jù)進(jìn)行處理,但是有時(shí)處理不當(dāng)就會出現(xiàn)很多問題,如果對提交的數(shù)據(jù)又是需要用Javascript技術(shù),而過濾的時(shí)候沒有注意到這些問題,比如在一個(gè)表單中用戶用了Javascript技術(shù),而沒有過濾掉這些代碼,有可能用戶在瀏覽表單內(nèi)容就死機(jī):而如果表單提交到數(shù)據(jù)庫的數(shù)據(jù)沒有結(jié)果數(shù)據(jù)的過濾,可能遇到更嚴(yán)重的漏洞,以JSP為例子,下面是一個(gè)管理員登錄頁面的程序片斷:[2]
上面的代碼咋一看去沒有什么漏洞,其實(shí)不然,如果用戶在登錄的時(shí)候在name和password文本框都輸入"'or''1'='1",提交到服務(wù)器,上面的sql語句就是:
上面的語句執(zhí)行后顯然rs.eof為真,于是把a(bǔ)dmin登錄標(biāo)準(zhǔn)置為ture,讓攻擊者以管理員的身份登錄了admin.jsp頁面,在該用戶以管理員的身份登錄服務(wù)器后,他很可能向服務(wù)器上傳木馬程序,進(jìn)而得到服務(wù)器系統(tǒng)管理員的權(quán)限。
2.身份認(rèn)證不能忽視在黑客軟件泛濫
網(wǎng)絡(luò)帶寬暢通的今天,破解比較簡單的密碼已經(jīng)不是一件很難的事情。在網(wǎng)絡(luò)上比較有名的WEB密碼破解軟件—溯雪,可以用暴力破解網(wǎng)絡(luò)上基于WEB表單的密碼,其原理很簡單,就是用密碼字典生成密碼文件,然后不停的向服務(wù)器提交字典表單的數(shù)據(jù),當(dāng)服務(wù)器返回為真的ID和密碼,就成功破解。對于一個(gè)預(yù)防攻擊的Web表單來講,驗(yàn)證碼通常是一個(gè)常見和有效的措施。
3.少用Cookies
Cookies是服務(wù)器在本地機(jī)器上存儲的小段文本并隨每一個(gè)請求發(fā)送至同一個(gè)服務(wù)器。網(wǎng)絡(luò)服務(wù)器用HTTP頭向客戶端發(fā)送Cookies,在客戶終端,瀏覽器解析這些Cookies并將它們保存為一個(gè)本地文件,它會自動(dòng)將到同一服務(wù)器的任何請求縛上這些Cookies。WEB編程Cookies的運(yùn)用,可以方便電腦暫時(shí)檢測用戶的類型,給WEB程序員和電腦用戶帶來很多方便??墒菍τ诰W(wǎng)絡(luò)的破壞者來說,也是給他開個(gè)一個(gè)后門,有時(shí)甚至他可以讓你訪問他的一個(gè)簡單的網(wǎng)頁,他就可以輕易盜取你的賬號和密碼。
4.慎用Javascript
Javascript是一種新的描述語言,此語言可以被嵌入HTML的文件之中。透過Javascript可以做到回應(yīng)使用者的需求事件(如:form的輸入)而不用任何的網(wǎng)路來回傳輸資料,所以當(dāng)一位使用者輸入一項(xiàng)資料時(shí),它不用經(jīng)過傳給服務(wù)器(Server)處理,再傳回來的過程,而直接可以被客戶端(Client)的應(yīng)用程式所處理。
由于它一般只在客戶端執(zhí)行,而且其源代碼客戶端可以直接看到,跟服務(wù)器端沒有必然聯(lián)系,而它又可以在客戶端離線修改了再運(yùn)行,所以沒有較高的安全性。
總而言之,在WEB編程過程中,本文只是對其腳本漏洞最典型的一些方面進(jìn)行闡述,當(dāng)然,這些漏洞的防范也不止上面所列舉的方案。本文在舉例過程中,主要用到的是JSP腳本語言技術(shù),但是只是說用的語言不同而已,其他的腳本語言會存在同樣的問題。由于本人技術(shù)和時(shí)間有限,望計(jì)算機(jī)同仁能在WEB腳本漏洞提出更多更好的意見和建議。
[1]億龍電腦網(wǎng).http://xxgc.zjbti.net.cn/ku fl ash/article_view.asp?id=65.
[2]《黑客X檔案》.2003年第11期.
[3]《Java2類庫》(增補(bǔ)版).機(jī)械工業(yè)出版社.