ACCESS MSSQL Mysql Oracle 
Google adsense申请技巧本站核心代理域名注册主机业务 快速发布你的买卖域名买卖网站信息 1元注册 cn域名
站长每日新闻导读 √ ·推荐万网空间¥120元 150m 站长网:站长必上的网站网站联盟大全本站代理万网域名55空间120元
 2007-7-24 12:58:13

如何防止Access数据库被下载的9种方法

来源: 字体:[ ]

(一)实验过程  

为了叙述方便,举个具体例子做个实验:应用程序为 /test ,数据库存放在 D:\wwwr oot\test\data\db1.mdb,我们已经知道在 ASP.NET 中是以一个叫做  ;ASPNET 虚拟用户的身份访问数据库的,我们需要给这个账户以特定的 NTFS 权限才能 使 ASP.NET 程序正常运行。  

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

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

   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以如下权限:   
                          允许  拒绝   
      完全控制           □   □   
      修改                 □   □   
      读取及运行        √   □
      列出文件夹目录  √   □   
      读取                √    □   
      写入                √    □  

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以 如下权限:   
                            允许  拒绝   
      完全控制             □    □   
      修改                   □    □   
      读取及运行          √    □  
      列出文件夹目录    √    □   
      读取                   √    □   
      写入                   √    □  

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

1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的"最低权限"。  

(a) 如果 db1.mdb 是 Access 2000 创 建的数据库,我们会发现一个小问题:生成的 *.ldb 文件不会自己删除,访问后该文件依然存在,但这个 问题不会影响 ASP.NET 的正常运行。  

(b) 如果 db1.mdb 是 Access XP 创建的 数据库,没有出现上面类似问题。  

(c) 原因初步分析:我们仅仅是给了 ASPNET 以写入文件夹的权限,没有给它修改的权限 ,所以文件一旦写入,便无法修改其内容,*.ldb 也就删除不掉了。  


 推荐教程
     
网站地图 - 域名注册续费虚拟主机代理 - 交易论坛 - 网站投稿 - 广告服务 - 帮助中心 - 联系我们
Copyright ©2003-2007 www.Admin5.com All Rights Reserved