摘要:作為開發中小型網上數據庫應用系統的優秀開發方案之一,Asp+Access的開發模式也存在一些安全漏洞,文章分析了數據庫的特點,并針對漏洞,提出了行之有效的解決方法。
關鍵詞:Asp;Access;數據庫;安全
中圖法分類號:TP393.08文獻標識碼:A 文章編號:1009-3044(2008)11-20218-01
隨著計算機的普及和計算機各方面技術的高速發展,計算機網絡也更加深入地影響和改變著我們的生活。作為一種服務器端腳本編寫環境,ASP(Active Server Pages)可以用來創建和運行動態網頁或Web應用程序,被廣泛應用于新聞發布、搜索引擎、電子商務等各種互聯網應用中。而Access數據庫作為Microsoft公司推出的以標準JET為引擎的桌面型數據庫系統,由于具有操作簡單、界面友好等特點,得到了廣大計算機用戶的推崇。因此Asp+Access成為許多中小型網上應用系統開發的最佳方案之一。但是由于Asp+Access技術本身的局限性,也為用戶帶來了一定的安全隱患。
由于Asp動態網頁開發技術主要使用在動態網頁的設計中,所以有很多的網絡攻擊者通過尋找它的漏洞,達到獲取管理員權限,并進一步控制服務器、竊取信息的目的。在這里,我們就Asp+Access的網絡系統本身存在的幾個方面的漏洞以及解決方法做一些探討。
1 Access數據庫的安全問題
Access數據庫的安全問題主要表現在:一是Access數據庫如果存儲不當,可能被攻擊者完全下載;二是Access數據庫自身的加密系統比較脆弱,容易被破解。
1.1 Access數據庫的存儲安全
在由Asp+Access構建的網絡系統中,如果對方能得到系統中數據庫的存儲路徑以及文件名,就能輕易地將數據庫下載到本地打開,獲取其中的信息。
在存儲Access數據庫的時候,應該將文件名設置得不規律、位數較長,,并將文件放置于網站的多級目錄下,讓攻擊者無法輕易地獲取路徑和文件名,即使攻擊者不斷地猜解路徑和文件名,也需要耗費大量的時間。這種情況下,管理員在日常管理中也很容易從大量的日志文件發現服務器遭受攻擊。
在修改完文件名后,數據庫仍然可能被猜解并被下載。為提高安全性,需要將數據庫文件的后綴名改為.asp或.asa,這樣修改后,數據庫文件仍然可以正常地被應用程序使用,而且當數據庫文件被瀏覽器執行的時候,也不會被直接下載,而是會在瀏覽器中顯示出亂碼,不容易被竊取內容。
雖然數據庫的擴展名變成了.asp,但是當攻擊者獲取完整路徑以后還是可以下載到數據庫,對方可以等瀏覽器頁面完全打開以后將這個數據庫asp頁“另存為”到本機上面,然后將后綴名改為.mdb就可以了。要解決這個問題,可以在數據庫內添加一行錯誤的Asp代碼,管理員可以先建立一個隱藏表,表內只有一列,在表中只插入錯誤的一句Asp代碼,這樣一來,對方打開數據庫的頁面時就只會出現Asp腳本的錯誤信息,而不會下載數據庫了。
以上所有的措施并不能保證Access數據庫的絕對安全,因為一旦ASP源代碼被攻擊者掌握,無論數據庫名字位數多長,隱藏的目錄多深,ASP源代碼被破解后,數據庫也會很容易被攻擊者下載。但是如果在Asp程序中使用ODBC數據源,就不會出現這樣的情況。在ASP程序設計中,應盡量使用ODBC數據源,不要把數據庫名直接寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同被攻擊者掌握。例如:
DBPath = Server.MapPath(“./database/mydb/fasgwetywe11.mdb ”)
conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath
那么,數據庫的地址就暴露出來,攻擊者就很容易下載到數據庫了。
但是,如果管理員采用的是ODBC數據源,攻擊者即使拿到了源代碼:conn.open “ODBC-DSN名”,他也無法得到數據庫的物理地址,從而也無法通過下載的方式獲取數據庫文件。
1.2 Access數據庫的加密安全
Access數據庫自身的加密機制比較簡單,很容易被破解。Access數據庫的文件頭中42H-4EH為密碼區,管理員在設置密碼時,Access會根據所設密碼的ASCII碼與密碼區的內容進行異或運算,最后將運算的結果存入密碼區。
在Access數據庫打開之后,數據庫中的所有對象對用戶都將是可用的。所以對于一些存儲重要數據的Access數據庫,管理員除了設置數據庫密碼外,還應該對數據庫中的數據進行加密。
2 程序代碼編寫過程中的安全問題
2.1 利用Session對象進行注冊驗證
為防止未經注冊的用戶繞過注冊界面直接進入應用系統,可以采用Session對象進行注冊驗證。Session對象最大的優點是可以把某用戶的信息保留下來,讓后續的網頁讀取。
2.2 對Asp頁面進行加密
為了防止Asp程序的源代碼被非法獲取,可以采取對Asp腳本加密技術來保護源程序?,F在有兩種常用的方法對Asp腳本進行加密處理。一種是使用VB6.0提供的Activexdll對象將Asp代碼進行封裝,編譯為DLL文件,在Asp程序中調用該DLL文件;另一種是使用微軟提供的Script Encoder對Asp頁面進行加密。但是,使用Activexdll對象進行封裝的主要問題是每段代碼都需要組件化,操作起來非常繁瑣,不適用于大型程序的開發;而使用Script Encoder對Asp頁面進行加密,使用起來非常方便,而且易于維護。
3 結束語
Asp+Access作為現在網絡開發的主流方式之一,已經應用到網絡的每個角落,我們在享受它為我們帶來的便捷應用的同時,也要充分認識到這種編程技術自身的缺點,將主要精力放在程序安全性的預防上,用各種方式來彌補技術上的漏洞,定期做到查閱服務器日志、備份數據庫等工作,及時有效地阻止外界對服務器的入侵。
參考文獻:
[1] 黃峰. 基于WEB性能和安全的研究[J]. 福建電腦, 2007(7):73-121.
[2] 韓嘉檸.Web數據庫的開發與安全設計.開發研究與設計技術[J],2007(5):114-115.
[3] 趙領,鄧江洪.Asp訪問Web數據庫的應用分析.天中學刊[J],2007(5):51-53.