如何防止Access數據庫下載是一個很老的話題了網上的討論也比較多在這裡只是探討ASPNET下防止Access數據庫被下載的方法有些是對以前方法的總結部分是自己原創其中可能有不完善甚至不正確的地方歡迎大家指出一同進步
目前的解決方案主要有以下幾種
把數據庫文件放置到站點目錄之外
設置存放數據庫文件的IIS目錄權限為不可讀取(IIS信息服務管理>選擇需要設置目錄>右鍵>屬性>目錄選項卡>取消讀取復選框)
采用ODBC數據源
以上三種方法都比較經典也比較安全適合能對服務器直接操作的情況(因為三種方法都需要直接操作服務器進行設置)當然這也是ASP平台下防止Access被下載的解決方案
ASP平台下還有一種解決辦法那就是在數據庫中添加一個長二進制表然後把文件後綴修改為asp(詳情可參照動網論壇數據庫的相應數據表)
將你的 Access 重命名 *asax因為 ASPNET 的處理機制中默認情況下對這樣的請求是直接拒絕的並不會有思歸提到的解析過程耗費資源等問題按照這個思路其實還可以把 Access 重命名為 nfig*vb *cs 等等
將你的 Access 放在你的應用程序根下 bin 目錄(也就是你放置 DLL 文件的那個目錄)中已經發現IIS 默認被配置為拒絕直接訪問 bin 目錄中的文件用以保護對 DLL 的請求事實上也同時保護了放在 bin 目錄中其他文件但是對於這種方法有人提出疑問 會不會有這樣的後果數據庫讀寫時會造成程序集被頻繁的刷新也會Session和Application不斷丟失
(個人原創)另外一種方法是利用NET的訪問權限控制達到禁止匿名用戶下載數據庫的目的具體如下
打開配置文件nfig在configuration節點下添加如下一段配置
<location path=DataBase>
<systemweb>
<authorization>
<deny users=* />
</authorization>
</systemweb>
</location>
DataBase是你的數據庫文件存放目錄如果是根目錄則用<locateon path=~/databaseaspx>替換即可添加了上述配置後再把數據庫後綴修改為aspx等需要經過IIS解析的文件類型即可
因為<deny users=* />語句限制任何匿名用戶訪問路徑path=DataBase下的所有需要解析的文件
注意無論是ASP中還是NET下對於直接把Access數據庫後綴直接改為asp和aspx或者在文件名前面添加#或文件名中加入空格用FlashGet照下不誤
From:http://tw.wingwit.com/Article/program/net/201311/13915.html