But it's getting there. 第六卷 用IIS+ASP建網站的安全性分析
第一章 用IIS+ASP建網站的安全性分析
隨著Internet的發展,Web技術日新月異,人們已經不再滿足於靜態HTML技術,更多的是要求動態、交互的網絡技術。繼通用網關接口(CGI)之後,微軟推出的IIS+ASP的解決方案作為一種典型的服務器端網頁設計技術,被廣泛應用在網上銀行、電子商務、網上調查、網上查詢、BBS、搜索引擎等各種互聯網應用中。與此同時,Access數據庫作為微軟推出的以標準JET為引擎的桌麵型數據庫係統,由於具有操作簡單、界麵友好等特點,具有較大的用戶群體。目前,IIS+ASP+Access是中小型Internet網站的首選方案。但是,該解決方案在為我們帶來便捷的同時,也帶來了嚴峻的安全問題。
一、安全隱患分析
IIS+ASP+Access解決方案的主要安全隱患來自Access數據庫的安全性,其次在於ASP網頁設計過程中的安全意識和措施。
1.數據庫可能被下載
在IIS+ASP+Access網站中,如果有人通過各種方法獲得或者猜到數據庫的存儲路徑和文件名,則該數據庫就可以被下載到本地。例如:對於網上書店數據庫,一般命名為book.mdb、store.mdb等,存儲路徑一般為"URL/database"或放在根目錄"URL/"下,這樣,任何人敲入地址:"URL/database/store.mdb", 數據庫就可以被下載了。
2.數據庫可能被解密
由於Access數據庫的加密機製比較簡單,即使設置了密碼,解密也很容易。該數據庫係統通過將用戶輸入的密碼與某一固定密鑰(例如: Access 97為86 FB EC 37 5D 44 9C FA C6 5E 28 E6 13)進行"異或"來形成一個加密串,並將其存儲在*.mdb文件從地址"&H42"開始的區域內。我們可以輕鬆地編製解密程序,一個幾十行的小程序就可以輕鬆地獲得任何Access數據庫的密碼。因此,隻要數據庫被下載,其信息就沒有任何安全性可言了。
3.ASP頁麵的安全性
(1)源代碼安全性隱患。由於ASP程序采用非編譯性語言,大大降低了程序源代碼的安全性。如果黑客侵入站點,就可以獲得ASP源代碼;同時對於租用服務器的用戶,因個別服務器出租商的職業道德問題,也會造成ASP應用程序源代碼泄露。
(2)程序設計中容易被忽視的安全性問題。ASP代碼使用表單實現交互,而相應的內容會反映在瀏覽器的地址欄中,如果不采用適當的安全措施,隻要記下這些內容,就可以繞過驗證直接進入某一頁麵。例如在瀏覽器中敲入"...page.asp?x=1",即可不經過表單頁麵直接進入滿足"x=1"條件的頁麵。因此,在驗證或注冊頁麵中,必須采取特殊措施來避免此類問題的產生。
二、提高IIS+ASP網站安全性的方法
1.防止數據庫被下載
由於Access數據庫加密機製過於簡單,有效地防止數據庫被下載,就成了提高ASP+Access解決方案安全性的重中之重。以下兩種方法簡單、有效。
(1)非常規命名法。為Access數據庫文件起一個複雜的非常規名字,並把它放在幾個目錄下。例如,對於網上書店的數據庫,我們不把它命名為"book.mdb"或"Store.mdb",而是起個非常規的名字,例如:faq9jl.mdb,再把它放在如./akkt/kj61/acd/av5 的幾層目錄下,這樣黑客想通過猜的方式得到Access數據庫文件名就很難了。