.NET中防止Access數(shù)據(jù)庫下載
更新時間:2006年09月28日 00:00:00 作者:
如何防止Access數(shù)據(jù)庫下載是一個很老的話題了,網(wǎng)上的討論也比較多。在這里只是探討ASP.NET下防止Access數(shù)據(jù)庫被下載的方法,有些是對以前方法的總結(jié),部分是自己原創(chuàng)。其中可能有不完善甚至不正確的地方,歡迎大家指出,一同進步。
目前的解決方案主要有以下幾種:
1. 把數(shù)據(jù)庫文件放置到站點目錄之外
2. 設(shè)置存放數(shù)據(jù)庫文件的IIS目錄權(quán)限為不可讀?。↖IS信息服務(wù)管理->選擇需要設(shè)置目錄->右鍵->屬性->目錄選項卡->取消讀取復(fù)選框)
3. 采用ODBC數(shù)據(jù)源
以上三種方法都比較經(jīng)典也比較安全,適合能對服務(wù)器直接操作的情況(因為三種方法都需要直接操作服務(wù)器進行設(shè)置),當(dāng)然這也是ASP平臺下防止Access被下載的解決方案。
ASP平臺下還有一種解決辦法,那就是在數(shù)據(jù)庫中添加一個長二進制表,然后把文件后綴修改為.asp。(詳情可參照動網(wǎng)論壇數(shù)據(jù)庫的相應(yīng)數(shù)據(jù)表)
4. 將你的 Access 重命名 *.asax:因為 ASP.NET 的處理機制中,默認情況下,對這樣的請求是直接拒絕的,并不會有思歸提到的解析過程耗費資源等問題。按照這個思路,其實還可以把 Access 重命名為 *.config,*.vb, *.cs 等等。
5. 將你的 Access 放在你的應(yīng)用程序根下 bin 目錄(也就是你放置 DLL 文件的那個目錄)中:已經(jīng)發(fā)現(xiàn),IIS 默認被配置為拒絕直接訪問 bin 目錄中的文件,用以保護對 DLL 的請求,事實上也同時保護了放在 bin 目錄中其他文件。但是對于這種方法,有人提出疑問: 會不會有這樣的后果,數(shù)據(jù)庫讀寫時會造成程序集被頻繁的刷新,也會Session和Application不斷丟失
6. (個人原創(chuàng))另外一種方法是利用.NET的訪問權(quán)限控制達到禁止匿名用戶下載數(shù)據(jù)庫的目的,具體如下:
打開配置文件Web.config,在configuration節(jié)點下添加如下一段配置:
<location path="DataBase">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
DataBase是你的數(shù)據(jù)庫文件存放目錄,如果是根目錄則用<locateon path=”~/database.aspx”>替換即可。添加了上述配置后再把數(shù)據(jù)庫后綴修改為.aspx等需要經(jīng)過IIS解析的文件類型即可。
因為<deny users="*" />語句限制任何匿名用戶訪問路徑path="DataBase"下的所有需要解析的文件。
注意:無論是ASP中還是.NET下,對于直接把Access數(shù)據(jù)庫后綴直接改為.asp和.aspx,或者在文件名前面添加“#”或文件名中加入空格,用FlashGet照下不誤。
目前的解決方案主要有以下幾種:
1. 把數(shù)據(jù)庫文件放置到站點目錄之外
2. 設(shè)置存放數(shù)據(jù)庫文件的IIS目錄權(quán)限為不可讀?。↖IS信息服務(wù)管理->選擇需要設(shè)置目錄->右鍵->屬性->目錄選項卡->取消讀取復(fù)選框)
3. 采用ODBC數(shù)據(jù)源
以上三種方法都比較經(jīng)典也比較安全,適合能對服務(wù)器直接操作的情況(因為三種方法都需要直接操作服務(wù)器進行設(shè)置),當(dāng)然這也是ASP平臺下防止Access被下載的解決方案。
ASP平臺下還有一種解決辦法,那就是在數(shù)據(jù)庫中添加一個長二進制表,然后把文件后綴修改為.asp。(詳情可參照動網(wǎng)論壇數(shù)據(jù)庫的相應(yīng)數(shù)據(jù)表)
4. 將你的 Access 重命名 *.asax:因為 ASP.NET 的處理機制中,默認情況下,對這樣的請求是直接拒絕的,并不會有思歸提到的解析過程耗費資源等問題。按照這個思路,其實還可以把 Access 重命名為 *.config,*.vb, *.cs 等等。
5. 將你的 Access 放在你的應(yīng)用程序根下 bin 目錄(也就是你放置 DLL 文件的那個目錄)中:已經(jīng)發(fā)現(xiàn),IIS 默認被配置為拒絕直接訪問 bin 目錄中的文件,用以保護對 DLL 的請求,事實上也同時保護了放在 bin 目錄中其他文件。但是對于這種方法,有人提出疑問: 會不會有這樣的后果,數(shù)據(jù)庫讀寫時會造成程序集被頻繁的刷新,也會Session和Application不斷丟失
6. (個人原創(chuàng))另外一種方法是利用.NET的訪問權(quán)限控制達到禁止匿名用戶下載數(shù)據(jù)庫的目的,具體如下:
打開配置文件Web.config,在configuration節(jié)點下添加如下一段配置:
<location path="DataBase">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
DataBase是你的數(shù)據(jù)庫文件存放目錄,如果是根目錄則用<locateon path=”~/database.aspx”>替換即可。添加了上述配置后再把數(shù)據(jù)庫后綴修改為.aspx等需要經(jīng)過IIS解析的文件類型即可。
因為<deny users="*" />語句限制任何匿名用戶訪問路徑path="DataBase"下的所有需要解析的文件。
注意:無論是ASP中還是.NET下,對于直接把Access數(shù)據(jù)庫后綴直接改為.asp和.aspx,或者在文件名前面添加“#”或文件名中加入空格,用FlashGet照下不誤。
相關(guān)文章
使用.net core3.0 正式版創(chuàng)建Winform程序的方法(圖文)
這篇文章主要介紹了使用.net core3.0 正式版創(chuàng)建Winform程序的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Asp.net實現(xiàn)MVC處理文件的上傳下載功能實例教程
這篇文章主要介紹了Asp.net實現(xiàn)MVC處理文件的上傳下載功能,比較全面而系統(tǒng)的對Asp.net MVC的文件上傳下載功能進行了深入分析,有很好的借鑒價值,需要的朋友可以參考下2014-08-08ASP.NET Core使用JWT認證授權(quán)的方法
這篇文章主要介紹了ASP.NET Core使用JWT認證授權(quán)的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11詳細說明asp.net中datareader 和 dataset 的區(qū)別
asp.net中datareader 和 dataset的區(qū)別主要是在獲取數(shù)據(jù)的機制和獲取數(shù)據(jù)的方式方面,下面我們來看教程2013-08-08CZGL.ProcessMetrics監(jiān)控.NET應(yīng)用
這篇文章介紹了CZGL.ProcessMetrics監(jiān)控.NET應(yīng)用的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04