网络编程
位置:首页>> 网络编程>> Asp编程>> [整理版]防止Access数据库被下载的9种方法(4)

[整理版]防止Access数据库被下载的9种方法(4)

作者:tyhouse 来源:twocity.cn 发布时间:2007-08-10 09:31:00 

标签:Access,防止下载,数据库

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


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


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


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


如果非要解决这个问题,进一步放开权限为:  
  a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以 如下权限:  
                              允许  拒绝  
      完全控制              □   □  
      修改                   √    □  
      读取及运行          √    □ 
      列出文件夹目录    √    □  
      读取                   √    □  
      写入                   √    □  


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


1.5  附带着,实验另一种情形:我们把 db1.mdb 在 Acce ss 打开编辑,同时访问 ASP.NET。  


(a) 如果 db1.mdb 是 Access 2000 创 建的数据库,我们发现并没有出现什么问题。  


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


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


(c) 原因初步分析:Access 数据库是单用户单线程的数据库,我们在 Access&n bsp;里面打开编辑数据库文件时其实是以当前 Windows 用户(比如Administrator) 身份打开数据库,而 ASP.NET 默认使用的是 ASPNET 虚拟用户(隶属于  Users 组),级别低于 Administrator,无法和 Adminis trator "抢夺"权限,所以出现冲突错误。至于 Access 2000 忽略 这个问题的情形我们也不必做讨论了,可能是 Access 2000 没有考虑那么多因素吧。& nbsp; 


1.6  再附带一种情形:将 db1.mdb 的属性改为"只读",无论是&nbs p;Access 2000 还是 Access XP 都将分别出现与& nbsp;1.2 中各自的错误相同的错误提示。  


(二)实验结论  


(1) 我们首先再次总结一下 Access 数据库文件的 NTFS 权 限设置的缘起:  


   在 ASP.NET 中默认是以一个叫做 ASPNET& nbsp;的虚拟用户的身份来访问、操作数据库的,你可以在"控制面板"-"管理工具"-"计算机管理"-"本地用户和组"-" 用户"中看到这个用户,默认情况下是:  


      全名:ASP.NET 计算机帐户&nb sp; 
      描述为:用于运行 ASP.NET&nb sp;辅助进程(aspnet_wp.exe)的帐户。  
      隶属于:Users组。  


   使用这么一个隶属于 Users 组的用户来进行文件操作、数据库操 作的风险是要比用一个 Administrators 组的用户的风险要小得多,这也是 ASP .NET 在安全方面的一个考虑吧。  


   既然是这么一个用户需要访问、操作数据库文件本身,那么我们就需要给它一定的  NTFS 权限以允许它的访问。显然没有 NTFS 的权限许可,ASPNET 就无 法访问、操作数据库,就会出现上面实验中所看到的那些错误了。  


(2) 经过上面的实验,我们已经知道如下的 NTFS 权限设置是可以满足一般需求的:&nb sp; 


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


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


同时我们也注意到 db1.mdb 是否为"只读"文件对 ASPNET 的访问也会 有一定影响。  


(3) 上述权限设置可以直接设置给 ASPNET 用户自己,也可以设置给 Use rs 组,或者直接给 Everyone 组上述权限都是可以的。因为 ASPNET  隶属于 Users 组,可以通过 用户组 给 ASPNET  设置权限。  


(4) NTFS 权限在文件或文件夹右击后得到的"属性"对话框-"安全"选项卡中设置,一般情况下,可 以考虑给 Adminitrators 组以"完全控制"的权限,同时不要轻易在"拒绝"中打勾,有关&n bsp;NTFS 权限设置的技巧,可以咨询网络管理员、网络安全专家的建议。  


注:FAT, FAT32 格式的分区中不支持 NTFS 权限。 &nb sp;


(5) Windows 2000 系列,Windows Server  2003 系列的"安全"选项卡默认是很容易找到的,但 Windows XP Pr ofessional 中的"安全"选项卡默认是关闭的,可以将"控制面板"-"文件夹选项"-"查看"选项卡中的" 高级设置"中"使用简单共享(推荐)"一项的"√"去除,"确定"之后,再次按照上面的方法即可看到"安全"选项卡了。

========== 
    综上所述,2、3、4法一起使用,是防止数据库被下载最基本,最行之有效的方 法,既适用于对服务器有管辖权的网管,又适用于虚拟主机的用户,推荐每一个制作者同时必用这三种方法  


    若你对服务器拥有管辖权,推荐再加上方法9,你的ACCESS数据库的安全性 就可以大大提高了。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com