打印本文 打印本文 关闭窗口 关闭窗口
九法防止ACCESS数据库被下载的
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1307  更新时间:2009/4/22 21:27:48  文章录入:mintao  责任编辑:mintao
 (一)实验过程


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

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

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

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\ 文件夹不变:

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

打印本文 打印本文 关闭窗口 关闭窗口