防止Access数据库被下载的多种方法

发布时间:2019-11-06编辑:脚本学堂
防止Access数据库被下载的多种方法,有需要的朋友可以参考下。

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 oottestdatadb1.mdb,我们已经知道在 ASP.NET 中是以一个叫做  ;ASPNET 虚拟用户的身份访问数据库的,我们需要给这个账户以特定的 NTFS 权限才能 使 ASP.NET 程序正常运行。  

为了得到最严格的 NTFS 权限设置,实验开始时我们给程序最低的 NTFS 权限 :  

  a) D:wwwroottestdata 文件夹的给用户ASPNET 以如下权限:  
                         允许  拒绝  
      完全控制          □   □  
      修改               □    □  
      读取及运行     √    □   
      列出文件夹目录√    □  
      读取               √    □  
      写入               □    □  

   b) D:wwwroottestdatadb1.mdb  文件本身给用户ASPNET以如下权限:  
      √ 允许将来自父系的可继承权限传播给该 对象  

1.1  对于某个只包含有"Select"命令的aspx程序,上述权限设置运行时无障碍,即:上述权限 已经满足这类程序的运行了。  

1.2  对于包含有"Update""Insert""Update"等命令的aspx程序,  ; 

(a) 如果 db1.mdb 是 Access 2000 创 建的数据库,出现如下错误:  

"/test"应用程序中的服务器错误。  
---------------------------------------  
Microsoft Jet 数据库引擎打不开文件'D:wwwroottestdata'。&n bsp;它已经被别的用户以独占方式打开,或没有查看数据的权限。   
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误 以及代码中导致错误的出处的详细信息。   
异常详细信息: System.Data.OleDb.OleDbException: Microsof t Jet 数据库引擎打不开文件'D:wwwroottestdata'。 它已经被 别的用户以独占方式打开,或没有查看数据的权限。  

(b) 如果 db1.mdb 是 Access XP 创建的 数据库,出现如下错误:  

"/test"应用程序中的服务器错误。  
----------------------------------------------  
操作必须使用一个可更新的查询。  
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误 以及代码中导致错误的出处的详细信息。   
异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个 可更新的查询。  

(c) 原因初步分析:因为包含有"Update""Insert""Update"等命令,需要对数据库文件本身进 行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。  

我们放开一些权限,  
  a) D:wwwroottestdata 文件夹不变: & nbsp;

   b) D:wwwroottestdatadb1.mdb  文件本身给用户ASPNET以如下权限:  
                          允许  拒绝  
      完全控制           □   □  
      修改                 □   □  
      读取及运行        √   □
      列出文件夹目录  √   □  
      读取                √    □  
      写入                √    □  

1.3  放开权限后继续实验,  

(a) 如果 db1.mdb 是 Access 2000 创 建的数据库,出现如下错误:  

"/test"应用程序中的服务器错误。  
------------------------------------------  
不能锁定文件。  
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误 以及代码中导致错误的出处的详细信息。   
异常详细信息: System.Data.OleDb.OleDbException: 不能锁定文件。