防止ACCESS數據庫被下載的9種方法(3)_Access數據庫教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:高手支招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數據庫教程/更新時間:2008-08-22
      相關Access數據庫教程