防止ACCESS數據庫被下載的9種方法(3)_Access數據庫教程
推薦:高手支招ASP及Access的安全隱患及對策 隨著Internet的發展,Web技術日新月異。繼通用網關接口(CGI)之后,“ASP”作為一種典型的服務器端網頁設計技術,被廣泛地應用在網上銀行、電子商務、搜索引擎等各種互聯網應用
9.利用NTFS分區的文件權限設置(by percyboy)
我們已經知道,ASP.NET 中使用 ADO.NET 訪問數據庫,通過 OleDb 的連接可以訪問 Access 數據庫— —我們非常常用的低端數據庫之一。本文討論了 ASP.NET 中可能看到的若干錯誤提示,從中看到&nb sp;Access 2000 和 Access XP 創建的數據庫文件 ,在訪問出現錯誤時會出現不太相同的錯誤提示。希望對大家有所幫助。另一個要點是,希望通過此文,使大家對 ASP. NET 中 Access 數據庫文件的 NTFS 權限設置有所新的認識 .
(一)實驗過程
為了敘述方便,舉個具體例子做個實驗:應用程序為 /test ,數據庫存放在 D:\wwwr oot\test\data\db1.mdb,我們已經知道在 ASP.NET 中是以一個叫做 ;ASPNET 虛擬用戶的身份訪問數據庫的,我們需要給這個賬戶以特定的 NTFS 權限才能 使 ASP.NET 程序正常運行。
為了得到最嚴格的 NTFS 權限設置,實驗開始時我們給程序最低的 NTFS 權限 :
a) D:\wwwroot\test\data\ 文件夾的給用戶ASPNET 以如下權限:允許 拒絕完全控制 &n bsp; □ & nbsp;□修改 &nbs p; &nbs p;□ □讀取及運行 & nbsp; √ □ ;列出文件夾目錄 ; √ □讀取 &nbs p; &nbs p;√ □寫入 &nbs p; &nbs p;□ □
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權限:√ 允許將來自父系的可繼承權限傳播給該 對象
1.1 對于某個只包含有"SELECT"命令的aspx程序,上述權限設置運行時無障礙,即:上述權限 已經滿足這類程序的運行了。
1.2 對于包含有"UPDATE""INSERT""UPDATE"等命令的aspx程序, ;
(a) 如果 db1.mdb 是 Access 2000 創 建的數據庫,出現如下錯誤:
"/test"應用程序中的服務器錯誤。
---------------------------------------
Microsoft Jet 數據庫引擎打不開文件D:\wwwroot\test\data\.&n bsp;它已經被別的用戶以獨占方式打開,或沒有查看數據的權限。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤 以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Data.OleDb.OleDbException: Microsof t Jet 數據庫引擎打不開文件D:\wwwroot\test\data\. 它已經被 別的用戶以獨占方式打開,或沒有查看數據的權限。
(b) 如果 db1.mdb 是 Access XP 創建的 數據庫,出現如下錯誤:
"/test"應用程序中的服務器錯誤。
----------------------------------------------
操作必須使用一個可更新的查詢。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤 以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Data.OleDb.OleDbException: 操作必須使用一個 可更新的查詢。
(c) 原因初步分析:因為包含有"UPDATE""INSERT""UPDATE"等命令,需要對數據庫文件本身進 行寫入操作,所以上述權限不能滿足此需求,我們需要進一步放開權限。
我們放開一些權限,a) D:\wwwroot\test\data\ 文件夾不變: & nbsp;
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權限:允許 拒絕完全控制 &n bsp; □ & nbsp;□修改 &nbs p; &nbs p;□ □讀取及運行 & nbsp; √ □ ;列出文件夾目錄 ; √ □讀取 &nbs p; &nbs p;√ □寫入 &nbs p; &nbs p;√ □
1.3 放開權限后繼續實驗,
(a) 如果 db1.mdb 是 Access 2000 創 建的數據庫,出現如下錯誤:
"/test"應用程序中的服務器錯誤。
------------------------------------------
不能鎖定文件。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤 以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Data.OleDb.OleDbException: 不能鎖定文件。& nbsp;
(b) 如果 db1.mdb 是 Access XP 創建的 數據庫,沒有出現錯誤。
(c) 原因初步分析:我們發現在打開 Access 數據庫時,同時會在所在目錄生成一個同名 的 *.ldb 文件,這是一個 Access 的鎖定標記。鑒于此,我們猜測,用戶 ASPNET 訪問 Access 數據庫時,也需要生成一個鎖定標記,而該目錄沒 有允許其寫入,因此出錯。至于 Access XP 創建的數據庫為什么沒有這個錯誤,原因還不 得而知。
我們進一步放開權限,a) D:\wwwroot\test\data\ 文件夾給用戶ASPNET以 如下權限:允許 拒絕完全控制 &n bsp; □ & nbsp;□修改 &nbs p; &nbs p;□ □讀取及運行 & nbsp; √ □ ;列出文件夾目錄 ; √ □讀取 &nbs p; &nbs p;√ □寫入 &nbs p; &nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb 文件本身給用戶ASPNET以如下權限:√ 允許將來自父系的可繼承權限傳播給該 對象
分享:ASP完美轉化ACCESS為SQL數據庫連接其實兩者基本通用 步驟很簡單3步: 1,轉化MDB數據庫到SQL SQL工具里就有 2, 更改數據庫鏈接字串 以下為代碼: 以下為引用的內容: Set Conn=Server.
- 相關鏈接:
- 教程說明:
Access數據庫教程-防止ACCESS數據庫被下載的9種方法(3)。