2018-07-19 08:17
ASP”(Active Server Pages)作為一種典型的服務器端網頁設計技術,被廣泛地應用在網上銀行、電子商務、搜索引擎等各種互聯網應用中。同時Access數據庫作為微軟推出的以標準JET為引擎的桌面型數據庫系統,由于具有操作簡單、界面友好等特點,具有較大的用戶群體。
因此ASP+Access成為許多中小型網上應用系統的首選方案。但ASP+Access解決方案在為我們帶來便捷的同時,也帶來了不容忽視的安全問題。
ASP+Access的安全隱患ASP+Access解決方案的主要安全隱患來自Access數據庫的安全性,其次在于ASP網頁設計過程中的安全漏洞。
1.Access數據庫的存儲隱患
在ASP+Access應用系統中,如果獲得或者猜到Access數據庫的存儲路徑和數據庫名,則該數據庫就可以被下載到本地。例如:對于網上書店的Access數據庫,人們一般命名為book.mdb、store.mdb等,而存儲的路徑一般為“URL/database”或干脆放在根目錄(“URL/”)下。這樣,只要在瀏覽器地址欄中敲入地址:“URL/database/store.mdb”,就可以輕易地把store.mdb下載到本地的機器中。
2.Access數據庫的解密隱患
由于Access數據庫的加密機制非常簡單,所以即使數據庫設置了密碼,解密也很容易。該數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行異或來形成一個加密串,并將其存儲在*.mdb文件中從地址“&H42”開始的區域內。由于異或操作的特點是“經過兩次異或就恢復原值”,因此,用這一密鑰與*.mdb文件中的加密串進行第二次異或操作,就可以輕松地得到Access數據庫的密碼。基于這種原理,可以很容易地編制出解密程序。 由此可見,無論是否設置了數據庫密碼,只要數據庫被下載,其信息就沒有任何安全性可言了。
3.源代碼的安全隱患
由于ASP程序采用的是非編譯性語言,這大大降低了程序源代碼的安全性。任何人只要進入站點,就可以獲得源代碼,從而造成ASP應用程序源代碼的泄露。
4.程序設計中的安全隱患
aSP代碼利用表單(form)實現與用戶交互的功能,而相應的內容會反映在瀏覽器的地址欄中,如果不采用適當的安全措施,只要記下這些內容,就可以繞過驗證直接進入某一頁面。例如在瀏覽器中敲入“……page.asp?x=1”,即可不經過表單頁面直接進入滿足“x=1”條件的頁面。因此,在設計驗證或注冊頁面時,必須采取特殊措施來避免此類問題的發生。 提高數據庫的安全性由于Access數據庫加密機制過于簡單,因此,如何有效地防止Access數據庫被下載,就成了提高ASP+Access解決方案安全性的重中之重。
1.非常規命名法
防止數據庫被找到的簡便方法是為Access數據庫文件起一個復雜的非常規名字,并把它存放在多層目錄下。例如,對于網上書店的數據庫文件,不要簡單地命名為“book.mdb”“store.mdb”,而是要起個非常規的名字,例如:faq19jhsvzbal.mdb,再把它放如./akkjj16t/kjhgb661/acd/avccx55 之類的深層目錄下。這樣,對于一些通過猜的方式得到Access數據庫文件名的非法訪問方法起到了有效的阻止作用。
2.使用ODBC數據源
在ASP程序設計中,應盡量使用ODBC數據源,不要把數據庫名直接寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同失密。即使數據庫名字起得再怪異,隱藏的目錄再深,ASP源代碼失密后,數據庫也很容易被下載下來。如果使用ODBC數據源,就不會存在這樣的問題了: conn.open “ODBC-DSN名”
對ASP網站建設頁面進行加密為有效地防止ASP網站建設源代碼泄露,可以對ASP頁面進行加密。一般有兩種方法對ASP頁面進行加密。一種是使用組件技術將編程邏輯封裝入DLL之中;另一種是使用微軟的Script Encoder對ASP頁面進行加密。筆者認為,使用組件技術存在的主要問題是每段代碼均需組件化,操作比較煩瑣,工作量較大;而使用Script Encoder對ASP頁面進行加密,操作簡單、收效良好。