摘要:該文分析了WEB服務器、程序設計以及數據庫三方面存在的安全隱患,并提出相應的防范措施。
關鍵詞:ASP;web服務器;程序設計及數據庫;防范措施
中圖分類號:TP393.08文獻標識碼:A文章編號:1009-3044(2009)33-9203-02
ASP Site Security Analysis
JIN Li-qin
(Zhejiang Province by the Food and Drug Inspection, Hangzhou 310004, China)
Abstract: This paper analyzes the WEB server, program design, and database security risks exist in three areas and suggest preventive measures.
key words: ASP; web server; program design and database; precautions
ASP(Active Server Pages)是微軟開發的服務器端腳本環境,應用ASP技術,不需要復雜的編程,就可以開發出專業的Web站點。因此,ASP迅速被廣大網絡設計和開發人員所接受,成為相當數量的網站開發人員在Windows環境下首選的開發工具。雖然ASP具有快速開發能力,但ASP也存在很多不容忽視的安全漏洞。
1 ASP 動態Web網站工作原理
一個典型的ASP網站通常采用IIS+MSSQLServer或者IIS+Access的系統結構。IIS提供Web服務,由SQL SERVER或者Access提供數據庫服務,客戶機通過瀏覽器與Web服務器交互獲取信息,而Web服務器把客戶機的數據請求提交到數據庫服務器,數據庫服務器再把提取的數據傳送給Web服務器,最后Web服務器通過瀏覽器顯示結果給客戶機,如圖1所示。從ASP工作機理來看,ASP腳本是一系列按照特定語法格式編寫的代碼(目前支持VBSCRIPT和JAVASCRIPT兩種腳本語言)與標準HTML頁面混合在一起的腳本所構成的文本格式的文件,是一種非編譯性語言。
由于ASP程序采用非編譯性語言, 使得基于ASP網站的安全漏洞包括兩個方面:一是Web服務器本身的安全,二是ASP程序設計以及數據庫安全。下面以IIS+Access架構為例,探討ASP網站全安全問題。
2 Web服務器本身的安全
ASP技術中常用微軟自帶的IIS架設web服務器,WEB服務器的安全包括系統安全和IIS的安全。
2.1 系統的安全
2.1.1 目錄文件的保護:NTFS權限
NTFS文件系統提供了比FAT32更為安全的文件管理方式,它通過文件訪問控制表(ACL)定義了用戶訪問文件和目錄的權限級別,如果用戶具有打開文件的權限,計算機則允許該用戶訪問文件,通過設定目錄和文件的訪問權限,禁止無關用戶對目錄文件進行復制、修改、刪除等操作,限制對系統的入侵。
2.1.2 關閉不用的服務和協議,堵上系統的漏洞后門
盡量少開沒用到的服務,一旦開啟了某服務就要提防該服務可能引起的漏洞,同時要定期下載操作系統、IIS、ASP和DBMS最新漏洞的補丁。
2.2 IIS的安全
2.2.1 不要將IIS安裝在系統分區上
默認情況下IIS與操作系統裝在同一個分區,這是一個潛在的安全隱患。因為一旦入侵者繞過IIS的安全機制,就可能入侵到系統分區,如果管理員對系統文件夾、文件的權限設置不嚴密,系統的重要文件就可能被篡改刪除,如將IIS安裝到其它分區,則可以降低此類事件發生的幾率。
2.2.2 修改IIS的默認安裝路徑
IIS的默認安裝路徑是\\inetpub,web服務頁面路徑是\\inetpub\\wwwroot,這是任何一個熟悉IIS的都知道的,使用默認路徑就等于告知了入侵者系統的重要資料,故絕對不能用默認路徑。
2.2.3 刪除危險的IIS組件
默認安裝后的有些IIS組件可能會造成安全威脅,用戶可根據需要決定是否刪除,如組件:internet服務管理器(HTML),SMTP Server,NNTP Server等。
3 程序設計安全
1) 用戶名、口令安全機制:加強匹配過濾條件,在必要場合可用DM5算法來加密用戶輸入的密碼,可以保證線路被監聽的情況下保證數據的安全,保護用戶口令的安全。
2) 進行注冊驗證:對用戶進行分級管理,限定權限,特定用戶訪問特定資源,可以利用SESSION對象和HTTP頭信息來實現此類安全控制。訪問者通過身份驗證頁面后把Session對象的SessionId屬性作為一個Srssion變量保存起來,當訪問者試圖導向到一個有效鏈接頁面時,則將當前的SessionID與保存在Session對象中的ID比較,不匹配則拒絕訪問。
3) 網頁過期處理:給網頁設置一個過期時間,不僅保證用戶的安全,也可減少服務器的連接數,提高服務器性能,如Session timeout=10,即可限制網頁連接時間,超時失效。
4) 程序出錯管理:錯誤的執行參數和意外的執行過程,都可使網頁出現錯誤提示,不法分子可從錯誤提示中得到很多網站相關信息,如數據庫名稱,字段名等,在程序代碼編寫中要注意對異常數據的處理和意外事件的發生進行有效控制。
5) 源代碼泄漏
由于ASP程序屬于非編譯性語言,其源代碼一旦泄漏,就可以了解站點設置情況而后進行多種攻擊。為有效地防止ASP源代碼泄露造成的危害,可以對ASP頁面進行加密。ASP加密的方法很多,一是ASPP2DLL技術,原理是利用VB6.0提供的ActicexDell對象將ASP代碼進行封裝,編譯為DLL文件,在ASP程序中調用該DLL文件。二是利用微軟提供的Script Encoder加密軟件對ASP頁面進行加密。
4 數據庫安全
4.1 Access被下載危機
在Asp + Access網站應用系統中,如果有人通過各種方法獲得或者猜到Access數據庫的存儲路徑和數據庫名,則該數據庫就可以被下載到本地。如對于網上書店的Access 數據庫,人們一般命名為Book.mdb 或Store.mdb等,而存儲的路徑一般為“URL/database”或放在根目錄(“URL/”) 下,這樣,在瀏覽器地址欄中敲入“URL/database/book.mdb”,就可以把Book.mdb下載到本地。
我們可以采用以下幾種簡單有效方法:①非常規命名法。為Access數據庫文件起一個復雜的非常規名字,并把這個名字放在幾個目錄下,這樣想通過猜的方式得到Access 數據庫文件名就很難了。②使用ODBC數據源。盡量使用ODBC 數據源,不要把數據庫名寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同失密。③為數據庫建立DSN。為數據庫建立DSN(DataSource Name),而在進行數據庫訪問時直接訪問該DSN。
4.2 SQL注入攻擊(SQL Injection)
注入攻擊是指攻擊者在普通用戶輸入中輸入數據庫操作命令。這類攻擊可以繞過程序中的密碼驗證,對數據庫進行查詢、修改和刪除等操作。SQL注入并非是ASP+SQL平臺特有的現象,理論上存在于任何使用SQL語句的系統。常見的SQL注入攻擊有:
4.2.1 SQL身份驗證的漏洞
缺乏安全防范的網站通過調用下列select語句驗證用戶的合法性:
SELECT * FROM tblUser WHERE UserName=\"userid\" AND Password =\"pass\"
這時,如果知道合法的用戶名(如tom),則在用戶名中鍵入tom --。這樣實際執行的SQL語句將是:
SELECT * FROM tblUser WHERE UserName=\"tom --\" AND Password= \"pass\"
這樣,由于“--”在SQL語法中為注釋符,最終被執行的語句將是:
SELECT * FROM tblUser WHERE UserName=tom,從而以用戶tom的身份登錄到系統。
有的程序員習慣使用SQL Server的sa帳號訪問數據庫,入侵者可以輕易地利用這個漏洞執行一些操作系統命令。
解決方法:在程序設計時應加強對用戶輸入信息合法性的判斷,嚴格用戶權限管理,避免默認數據庫帳號等。SQL注入可以在任何使用SQL語句的系統下產生,防火墻、防病毒軟件對它無能為力。
4.2.2 存儲過程和函數漏洞
在實際應用中,很多企業級用戶會用到微軟公司的另一個產品:MS SQL Server。SQL Server本身提供了非常多的函數、系統存儲過程和擴展存儲過程來幫助程序員更加方便地利用T—SQL完成軟件開發工作。由于有些程序員對此類功能知之不多,從而給入侵者大開方便之門。
4.3 密碼探測
密碼攻擊包括兩種:破解密碼和網絡監聽。破解密碼是使用工具不停的連接數據庫來猜測密碼,包括字典攻擊、暴力攻擊和界于兩者之間的半暴力半字典攻擊。通常攻擊者先采用字典攻擊的方法,沒有成功的話依次采用半暴力半字典攻擊、暴力攻擊。在網絡速度夠好,電腦運算能力夠強的情況下,這樣的密碼攻擊危害是相當大的。網絡監聽則是控制一臺網絡設備,在上面運行監聽工具捕獲在網絡中傳送的密碼信息。網絡監聽可以分為兩種。一種是外部的監聽,將偵聽工具軟件放到網絡連接的設備或者放到可以控制網絡連接設備的電腦上,這里的網絡連接設備,比如網關服務器、路由器等等。另外一種是來自內部的監聽,對于不安全的局域網,數據是采用廣播的方式傳播的,只要把網卡設置為混雜模式即可接收到本來不屬于自己的數據包,當然可能包括密碼信息等資料。
4.4 數據庫服務探測
數據庫系統總是通過打開特定的TCP或UDP端口提供數據服務的。譬如在默認情況下,MS SQL Server會打開TCP的1433端口監聽。攻擊者在端口掃描時,只要發現1433端口是打開的,就可以利用針對MS SQL Server的攻擊辦法展開攻擊。雖然MS SQL Server的監聽端口可以改變的,但是通過微軟未公開的1434端口的UDP探測依然可以知道SQL Server使用的TCP/IP端口。和1433端口不同,1434是不能改變的,而且,由于利用了udp端口,一般的過濾是很難防范的。可采用防火墻技術,可以根據數據庫服務器的應用范圍,在合適位置安裝防火墻。
5 結束語
綜上所述,ASP網站的安全問題應從系統的全局的角度進行分析和考慮,既要確保網站安全又要取得良好的系統性能。首先要了解網站架構的各個部件:Web服務器、開發語言(Asp)、數據庫(如Access)的優勢以及不足之處即存有那些漏洞,只有這樣才能制定合理的防范措施,基于Asp開發的網站的安全問題就可解決,但也不能因此而疏忽大意,絕對安全的網站是不在存的,我們應該經常查閱新技術,查看有關安全方面的資料,關注最新的漏洞和補丁,規范自己的編程習慣等,使網站更加安全。
參考文獻:
[1] 黃嘵華.基于ASP技術的網絡安全性研究[J].計算機安全,2008(12).
[2] 張春江.淺談ASP技術的安全[J].今日科苑,2009(4).
[3] 姚雪萍.ASP+ACCESS組建動態網站實例精講[M].北京:人民郵電出版社,2005.
[4] 江穎.ASP3.0動態網頁實務經典[M].北京:中國青年出版社,2000.