[整理版]防止Access数据库被下载的9种方法(4)
作者:tyhouse 来源:twocity.cn 发布时间:2007-08-10 09:31:00
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数据库的安全性 就可以大大提高了。


猜你喜欢
- 本文实例为大家分享了javascript实现切割轮播的具体代码,供大家参考,具体内容如下效果代码<!DOCTYPE html>&
- 我们平时生活的娱乐中,看电影是大部分小伙伴都喜欢的事情。周围的人总会有意无意的在谈论,有什么影片上映,好不好看之类的话题,没事的时候谈论电影
- <?php function CreateShtml() { ob_start(&quo
- 前言:在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进
- 本文实例讲述了python创建一个最简单http webserver服务器的方法。分享给大家供大家参考。具体实现方法如下:import sy
- 摘要:本文主要学习了如何使用DBUtils在Java代码中更方便的操作数据库。概述DBUtils是Java编程中的数据库操作实用工具,小巧简
- 前言GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止
- 查看当前连接系统参数:SHOW VARIABLES LIKE '%char%'; mysql> show variab
- 首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?  
- 最近在查看asp之家的访客统计时,发现访客使用firefox浏览器的占了10%-15%,而大部分的访客使用的是IE6,呵呵我也是用IE6。而
- 有这么一段代码,可以先看一下有没有什么问题,作用是输入一段json字符串,反序列化成map,然后将另一个inputMap的内容,merge进
- VuePressvuepress是尤大大4月12日发布的一个全新的基于vue的静态网站生成器,实际上就是一个vue的spa应用,内置webp
- 由于我们分发的python应用可能运行在64位环境,也可能运行在32位环境,所以我们需要为同一套应用代码配置两套打包环境,怎么配置?步骤如下
- 前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。下
- MySQL数据库管理软件有两种版本,一种是企业版,一种是社区版,其中,前者是收费的,如果是个人使用的,社区版足矣。下载mysql-5.7.1
- 本文实例讲述了jQuery实现网页抖动的菜单抖动效果。分享给大家供大家参考。具体如下:这里的jQuery抖动导航菜单效果,兼容IE7/8/9
- 要选择有助于使查询执行更快的列,应遵循如下规则(这里,“BLOB 类型”应该理解为即包含B L O
- 这里用Python逼近函数y = exp(x);同样使用泰勒函数去逼近:exp(x) = 1 + x + (x)^2/(2!) + .. +
- Neo4j是一款开源图数据库,Py2neo提供了使用Python语言访问Neo4j的接口。本文介绍了使用Py2neo的NodeMatcher
- 前言有时,我们希望判断文本框中用户输入的字符是否含有特殊符号(*/#$@),就像用户注册时密码框的填写。demo利用 RegExp 对象,能