1、防止數據庫被下載
由于Access數據庫加密機制過于簡單,有效地防止數據庫被下載,就成了提高ASP+Access解決方案安全性的重中之重。以下兩種方法簡單、有效。
?。?)非常規命名法。為Access數據庫文件起一個復雜的非常規名字,并把它放在幾個目錄下。例如,對于網上書店的數據庫,我們不把它命名為“book.mdb”或“Store.mdb”,而是起個非常規的名字,例如:faq9jl.mdb,再把它放在如./akkt/kj61/acd/av5的幾層目錄下,這樣黑客想通過猜的方式得到Access數據庫文件名就很難了。
(2)使用ODBC數據源。在ASP程序設計中,如果有條件,應盡量使用ODBC數據源,不要把數據庫名寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同失密,例如:
DBPath=Server.MapPath(“./akkt/kj61/acd/av5/faq9jl.mdb”)
conn.open“driver={MicrosoftAccessDriver(*.mdb)};dbq=”&DBPath
可見,即使數據庫名字起得再怪異,隱藏的目錄再深,ASP源代碼失密后,也很容易被下載下來。如果使用ODBC數據源,就不會存在這樣的問題了:
conn.open“ODBC-DSN名”
2、對ASP頁面進行加密
為有效地防止ASP源代碼泄露,可以對ASP頁面進行加密。我們曾采用兩種方法對ASP頁面進行加密。一是使用組件技術將編程邏輯封裝入DLL之中;二是使用微軟的ScriptEncoder對ASP頁面進行加密。使用組件技術存在的主要問題是每段代碼均需組件化,操作比較繁瑣,工作量較大,而使用Encoder對ASP頁面進行加密,操作簡單、收效良好。ScriptEncoder的運行程序是SCRENC.EXE,使用方法是:
SCRENC[/s][/f][/xl][/ldefLanguage][/edefExtension]inputfileoutputfile
其中:/s是屏蔽屏幕輸出;/f指定輸出文件是否覆蓋同名輸入文件;/xl指是否在.asp文件的頂部添加@Language指令;/ldefLanguag指定缺省的腳本語言;/edefExtension指定待加密文件的擴展名。
3、注冊驗證
為防止未經注冊的用戶繞過注冊界面直接進入應用系統,我們采用Session對象進行注冊驗證。例如,我們制作了下面的注冊頁面。
設計要求注冊成功后系統啟動hrmis.asp?page=1頁面。假設,不采用Session對象進行注冊驗證,則用戶在瀏覽器中敲入“URL/hrmis.asp?page=1”即可繞過注冊界面,直接進入系統。
在此,利用Session對象進行注冊驗證:
〈%
’讀取使用者所輸入的賬號和密碼
UserID=Request(“UserID”)
Password=Request(“Password”)
’檢查UserID及Password是否正確
IfUserID<>“hrmis”OrPassword<>“password”Then
Response.Write“賬號錯誤!”
Response.End
EndIf
’將Session對象設置為通過驗證狀態
Session(“Passed”)=True
%〉
進入應用程序后,首先進行驗證:
〈%
’如果未通過驗證,返回Login狀態
IfNotSession(“Passed”)Then
Response.Redirect“Login.asp”
EndIf
%〉