如何防止Access數據庫下載是一個很老的話題了,網上的討論也比較多。這裡我們給出幾種在ASP.NET下防止Access數據庫被下載的方法。
我們這裡假設Access數據庫名字為 test.mdb。
1、把數據庫放在WEB目錄外
如你的網站目錄是D:www,你可以把數據庫放到D:data 這個文件夾裡,然後修改網站程序中的數據庫連接字串地址部分為:"D:datatest.mdb" ,這樣數據庫可以正常調用,但是無法下載的,因為它不在網站目錄裡。
假設在web.config中配置數據庫連接字符串。例如:
2、把數據庫放在App_Data系統文件夾下
從.Net2.0開始有App_Data目錄來專門存放數據文件,它可以用來放Access,SQL Server Express、XML等數據文件。數據庫文件放到App_Data文件夾的好處就是可以防止被下載。而對於連接字符串數據庫的文件位置可以使用DataDirectory關鍵來表示它的物理路徑,從而在獲取連接字符串的時候不再需要使用Server.MapPath()轉換。
假設在web.config中配置數據庫連接字符串。例如:
|DataDirectory|就是代表的app_data文件夾。
3、重命名數據庫文件
將你的 Access 重命名 *.asax:因為 ASP.NET 的處理機制中,默認情況下,對這樣的請求是直接拒絕的。按照這個思路,還可以把 Access 重命名為 *.config,*.vb, *.cs 等等。
4、配置IIS,添加.mdb文件類型映射
添加.mdb的擴展映射這個方法就是通過修改IIS設置來實現。只需2個步驟。
1. 配置IIS,將.mdb文件類型映射到ASP.NET ISAPI。
以windows 2003為例,點擊“開始”-》運行-》輸入“inetmgr” 回車,打開“Internet 服務管理器”。在某一個網站上單擊鼠標右鍵-》點擊“屬性” 彈出此站點的屬性對話框。點擊“主目錄”選項卡,點擊“配置”按鈕,則會顯示“應用程序配置”對話框。點擊“添加”增加一個映射,這時會顯示一個對話框,要你輸入可執行文件:“C:WINDOWS Microsoft.NET Framework v2.0.50727 aspnet_isapi.dll”;輸入擴展名:“.mdb”。如下圖所示
2. 配置asp.net的web.config文件,將.mdb文件類型映射到HttpForbiddenHandler HTTP handler。
使asp.net應用程序.mdb文件類型映射到HttpForbiddenHandler HTTP 句柄。為了達到這上步,必須將下面的配置加到Web.config文件中
5、添加ACCESS防下載字段
該方法的原理是:將數據庫的擴展名變成.aspx格式,從遠程訪問這個文件的時候,IIS服務器就會把它當成aspx程序來執行,而我們之前在ACCESS數據庫中插入了“”標記中才能執行,所以就會出現 “缺少腳本關閉標記” 的500錯誤,別人就無法下載ACCESS數據庫了。如果只是簡單的在數據庫的文本或者備注字段加入“