?

淺析網站數據庫的安全防范及對策

2009-03-25 10:54黃榮生
商情 2009年11期
關鍵詞:數據庫安全

黃榮生

【摘 要】本文通過對ASP+Access網站中Access數據庫存在的主要安全問題進行分析研究,并從Access數據庫安全性和ASP頁面安全性等方面提出相應的安全防范對策。

【關鍵詞】ASP Access 數據庫 安全 ODBC數據源

筆者從事電子商務網站建設課程教學工作多年,一直選用ASP+Access方案構建方案。但ASP+Access方案最大的安全隱患在于Access數據庫可以被攻擊者非法下載,而現在互聯網上提供的很多ASP空間都是只支持Access數據庫。這樣一來,防止Access數據庫被非法下載就顯得非常重要了。本文筆者通過分析研究將告訴大家如何打造mdb數據庫文件的安全防范對策。

一、危機起因

(一)Access數據庫的安全問題

1.Access數據庫的存儲隱患

在ASP+Access應用系統中,如果獲得或者猜測到Access數據庫的存儲路徑和數據庫名,則該數據庫就可以被下載到本地。

2.Access數據庫的解密隱患

由于Access數據庫的加密機制非常簡單,所以即使數據庫設置了密碼,解密也很容易。該數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行異或來形成一個加密串,并將其存儲在*.mdb文件中從地址“&H42”開始的區域內。由于異或操作的特點是“經過兩次異或就恢復原值”,因此,用這一密鑰與*.mdb文件中的加密串進行第二次異或操作,就可以輕松地得到Access數據庫的密碼?;谶@種原理,很容易編制出解密程序或者在互聯網上下載到破解工具,數據庫文件的內容,企業的資料、隱私和員工的密碼從此不在安全。由此可見,無論是否設置了數據庫密碼,只要數據庫被下載,其信息就沒有任何安全性可言了。

(二)ASP帶來的安全問題

1.ASP程序源代碼的隱患

由于ASP程序采用的是非編譯性語言,這大大降低了程序源代碼的安全性。任何人只要進入站點,就可以獲得源代碼,從而造成ASP應用程序源代碼的泄露。

2.程序設計中的安全隱患

ASP代碼利用表單(form)實現與用戶交互的功能,而相應的內容會反映在瀏覽器的地址欄中,如果不采用適當的安全措施,只要記下這些內容,就可以繞過驗證直接進入某一頁面。例如在瀏覽器中敲入“page.asp?x=1”,即可不經過表單頁面直接進入滿足“x=1”條件的頁面。因此,在設計驗證或注冊頁面時,必須采取特殊措施來避免此類問題的發生。

二、防范對策

我們可以采用迷惑法、隱藏法、加密法、ODBC數據源法和注冊驗證法等技術手段防止數據庫文件被非法下載。

(一)非常規命名法

1.把數據庫的主文件名進行修改,并且放到很深的目錄下面

防止數據庫被找到的簡便方法是為Access數據庫文件起一個復雜的非常規名字,并把它存放在多層目錄下。例如,對于網上花店的數據庫文件,不要簡單地命名為“flower.mdb”或“bloom.mdb”,而是要起個非常規的名字,例如:halower123.mdb,再把它放在如/wh123/wd123d/hoo9/dh123/abc之類的深層目錄下。這樣攻擊者想簡單地猜測數據庫的位置就很困難了。

2.把mdb擴展名修改為ASP或ASA等不影響數據查詢的名字

但是有時候修改為ASP或者ASA以后仍然可以被下載,如將mdb修改為ASP以后,直接在IE的地址欄里輸入網絡地址,雖然沒有提示下載但是卻在瀏覽器里出現了一大片亂碼。如果使用FlashGet等專業的下載工具就可以直接把數據庫文件下載下來,因此需要找到一種FlashGet無法下載的方法。根據網站在處理包含unicode碼的鏈接的時候將會不予處理的原理??梢岳胾nicode編碼(比如可以利用“%3C”代替“<”等),來達到目的。而FlashGet在處理包含unicode碼的鏈接的時候卻“自作聰明”地把unicode編碼做了對應的處理,比如自動把“%29”的unicode編碼字符轉化成“(”。即是說如向FlashGet提交一個http://22.0.1.2/dat/%29amitx.mdb的下載鏈接,它卻解釋成了http://22.0.1.2/dat/(amitx.mdb,當單擊“確定”按鈕進行下載的時候,FlashGet就去尋找一個名為“(amitx.mdb”的文件,當然找不到。

(二)使用ODBC數據源

在ASP程序設計中,應盡量使用ODBC數據源,不要把數據庫名直接寫在程序中。例如:直接語句

DBPath=ServerMapPath(“/wh123/wd123d/hoo9/dh123/abc/halower123.mdb”)

ODBC數據源語句

Conn Open“driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath

可見,即使數據庫名字起得再怪異,隱藏的目錄再深,ASP源代碼失密后,數據庫也很容易被下載下來。如果使用ODBC數據源,就不會存在這樣的問題了。

(三)加密ASP頁面

可以使用微軟公司的免費軟件Script Encoder對ASP頁面進行加密。它可以對當前目錄中的所有的ASP文件進行加密,并把加密后的文件統一輸出到相應的目錄中。由于Script Encoder只加密在HTML頁面中嵌入的ASP代碼,其他部分仍保持不變,這就使得我們仍然可以使用FrontPage等常用網頁編輯工具對HTML部分進行修改、完善,操作起來簡單方便、效果良好。

(四)利用Session對象進行注冊驗證

為防止未經注冊的用戶繞過注冊界面直接進入應用系統,可以采用Session對象進行注冊驗證。Session對象最大的優點是可以把某用戶的信息保留下來,讓后續的網頁讀取。一般情況,在設計網站時都要求用戶注冊成功后才可登錄。但如果不采用Session對象進行注冊驗證,則用戶在瀏覽器中敲入“URL/hrmis.asp?page=1”即可繞過注冊界面,直接進入系統。利用Session對象可以有效阻止這一情況的發生。相關的程序代碼如下:

<%

‘讀取用戶輸入的賬號和密碼

UserID = Request(“UserID”)

Password = Request(“Password”)

‘檢查UserID及Password是否正確(實際程序可能會比較復雜)

If UserID <>“hrmis” Or Password <>

“password” Then

Response.Write“賬號錯誤!”

Response.End

End If

'將Session對象設置為通過驗證狀態

Session(“Passed”) = True

%>

進入應用程序后,首先進行驗證:

<%

'如果未通過驗證,返回Login狀態If Not Session(“Passed”) Then

Response.Redirect“login.htm”

End If

%>

三、結束語

所謂魔高一尺,道高一丈:從網絡安全技術本質上講,就是“攻”與“防”的技術。要確保Access數據庫文件不被非法下載,我們只有一方面要加強安全防范措施,防患于未然;另一方面也要經常對自己的網站進行安全測試,及時更新各種漏洞,讓網站真正為企業提供安全高效的信息服務。

參考文獻:

[1]周軍.ASP網站系統安全技術研究.商洛學院學報,2007,(5).

[2]李東風,謝昕.數據庫安全技術研究與應用.商洛學院學報,2008,(1).

[3]吳溥峰,張玉清.數據庫安全綜述.商洛學院學報,2006,(12).

猜你喜歡
數據庫安全
數據庫
數據庫
數據庫
數據庫
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合