胡志鵬鄧 莉
(1.四川航天職業技術學院 四川成都 610100;2.成都龍泉第六中學 四川成都 610100)
WEB編程中腳本漏洞的分析與防范
胡志鵬1鄧 莉2
(1.四川航天職業技術學院 四川成都 610100;2.成都龍泉第六中學 四川成都 610100)
腳本在網絡中的應用,可以說是隨處可見,其中ASP,PHP,JSP,ASPX等常見的腳本語言更是被廣泛應用于各類基于WEB服務的系統中。而由于程序員在設計WEB程序的時候不注意到腳本漏洞,給不速之客帶來了方便,可以說腳本漏洞的攻擊對于他們來說是永具生命力的攻擊手段。網絡安全是每一個計算機用戶和WEB程序員必須面對的問題,本文針對WEB編程中存在的幾個典型腳本漏洞進行了實例分析,并給出適當的防范措施,期望引起WEB程序員對網絡安全的重視。
WEB 編程 腳本漏洞 黑客技術
其實腳本是介于HTML與Pascal、C++、Java、VB、C#等編程語言之間的一種語言。它是以“操作系統+腳本引擎(腳本解釋器)+腳本語言”的工作方式,要使腳本語言在服務器端上正常工作,就需要在服務器端安裝腳本引擎,如ASP安裝IIS,JSP安裝JDK+RESIN,ASPX安裝IIS+.NET FRAME等,腳本引擎提供腳本在主機的環境,并對腳本程序中的腳本命令進行解釋。當解釋完畢后,腳本引擎把執行結果以HTML的語言格式發送給客戶端。[1]
根據上面的我們知道客戶端的瀏覽器時可以變量或者命令的形式向腳本程序提交數據和指令的,這就是說我們在編寫腳本程序代碼的時候應該避免出現腳本程序處理數據和指令存在的漏洞和缺陷,根據本人在編寫程序中遇到的漏洞一些問題,總結如下:
1.弱字符過濾
在實際WEB編程的過程中,我們需要對表單提交的數據進行處理,但是有時處理不當就會出現很多問題,如果對提交的數據又是需要用Javascript技術,而過濾的時候沒有注意到這些問題,比如在一個表單中用戶用了Javascript技術,而沒有過濾掉這些代碼,有可能用戶在瀏覽表單內容就死機:而如果表單提交到數據庫的數據沒有結果數據的過濾,可能遇到更嚴重的漏洞,以JSP為例子,下面是一個管理員登錄頁面的程序片斷:[2]
上面的代碼咋一看去沒有什么漏洞,其實不然,如果用戶在登錄的時候在name和password文本框都輸入"'or''1'='1",提交到服務器,上面的sql語句就是:

上面的語句執行后顯然rs.eof為真,于是把admin登錄標準置為ture,讓攻擊者以管理員的身份登錄了admin.jsp頁面,在該用戶以管理員的身份登錄服務器后,他很可能向服務器上傳木馬程序,進而得到服務器系統管理員的權限。
2.身份認證不能忽視在黑客軟件泛濫
網絡帶寬暢通的今天,破解比較簡單的密碼已經不是一件很難的事情。在網絡上比較有名的WEB密碼破解軟件—溯雪,可以用暴力破解網絡上基于WEB表單的密碼,其原理很簡單,就是用密碼字典生成密碼文件,然后不停的向服務器提交字典表單的數據,當服務器返回為真的ID和密碼,就成功破解。對于一個預防攻擊的Web表單來講,驗證碼通常是一個常見和有效的措施。
3.少用Cookies
Cookies是服務器在本地機器上存儲的小段文本并隨每一個請求發送至同一個服務器。網絡服務器用HTTP頭向客戶端發送Cookies,在客戶終端,瀏覽器解析這些Cookies并將它們保存為一個本地文件,它會自動將到同一服務器的任何請求縛上這些Cookies。WEB編程Cookies的運用,可以方便電腦暫時檢測用戶的類型,給WEB程序員和電腦用戶帶來很多方便??墒菍τ诰W絡的破壞者來說,也是給他開個一個后門,有時甚至他可以讓你訪問他的一個簡單的網頁,他就可以輕易盜取你的賬號和密碼。
4.慎用Javascript
Javascript是一種新的描述語言,此語言可以被嵌入HTML的文件之中。透過Javascript可以做到回應使用者的需求事件(如:form的輸入)而不用任何的網路來回傳輸資料,所以當一位使用者輸入一項資料時,它不用經過傳給服務器(Server)處理,再傳回來的過程,而直接可以被客戶端(Client)的應用程式所處理。
由于它一般只在客戶端執行,而且其源代碼客戶端可以直接看到,跟服務器端沒有必然聯系,而它又可以在客戶端離線修改了再運行,所以沒有較高的安全性。
總而言之,在WEB編程過程中,本文只是對其腳本漏洞最典型的一些方面進行闡述,當然,這些漏洞的防范也不止上面所列舉的方案。本文在舉例過程中,主要用到的是JSP腳本語言技術,但是只是說用的語言不同而已,其他的腳本語言會存在同樣的問題。由于本人技術和時間有限,望計算機同仁能在WEB腳本漏洞提出更多更好的意見和建議。
[1]億龍電腦網.http://xxgc.zjbti.net.cn/ku fl ash/article_view.asp?id=65.
[2]《黑客X檔案》.2003年第11期.
[3]《Java2類庫》(增補版).機械工業出版社.