加入收藏 本站免责政策声明!
 
 
·注册
·登陆
·会员中心
·设为首页
 您现在的位置:首页 > 编程开发 > ASP技术 > 安全与漏洞研究 > 原来改mdb为asp就能防下载是鬼话 > 正文
相关文章
·无相关文章
 
每日更新
· 饶过'(单引号)限制继续射入
· 安全脚本程序的编写 V1.0
· 原来改mdb为asp就能防下载是鬼话
· 改mdb为asp所带来的灾难
· 当网站不允许上传asp cer cdx htr文件时的一
 
Elook_AD
 
原来改mdb为asp就能防下载是鬼话
来源:未知  作者:佚名  时间:2005-3-5 4:20:12  字号选择:  
Microsoft Jet 数据库引擎打不开文件’D:\wwwroot\test\data\’。 它已经被别的用户以独占方式打开,或没有查看数据的权限。    
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
异常详细信息: System.Data.OleDb.OleDbException: Microsoft 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\ 文件夹不变:  


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








1.3  放开权限后继续实验,  


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


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





(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 也就删除不掉了。  





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


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








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


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



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


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





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





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





(二)实验结论  



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


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


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


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

 
[发给好友]  [打印本页] [关闭窗口] [返回顶部]
 
上一篇:改mdb为asp所带来的灾难
下一篇:安全脚本程序的编写 V1.0
网友评论


关于本站 - 广告服务 - 免责条款 - 联系我们 - 管理团队 - 友情链接 - 为您导航
ElookCMS V1.00
Copyright © 2005-2006 Elook.Net.Cn. All Rights Reserved