1.6 再附带一种情形:将 db1.mdb 的属性改为“只读”,无论是 Access 2000 还是 Access XP 都将分别出现与 1.2 中各自的错误相同的错误提示。 (二)实验结论 (1) 我们首先再次总结一下 Access 数据库文件的 NTFS 权限设置的缘起: 在 ASP.NET 中默认是以一个叫做 ASPNET 的虚拟用户的身份来访问、操作数据库的,你可以在“控制面板”-“管理工具”-“计算机管理”-“本地用户和组”-“用户”中看到这个用户,默认情况下是:
全名:ASP.NET 计算机帐户 描述为:用于运行 ASP.NET 辅助进程(aspnet_wp.exe)的帐户。飞飞Asp.技术乐园 隶属于:Users组。
|
使用这么一个隶属于 Users 组的用户来进行文件操作、数据库操作的风险是要比用一个 Administrators 组的用户的风险要小得多,这也是 ASP.NET 在安全方面的一个考虑吧。 既然是这么一个用户需要访问、操作数据库文件本身,那么我们就需要给它一定的 NTFS 权限以允许它的访问。显然没有 NTFS 的权限许可,ASPNET 就无法访问、操作数据库,就会出现上面实验中所看到的那些错误了。 (2) 经过上面的实验,我们已经知道如下的 NTFS 权限设置是可以满足一般需求的: a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限:
允许 拒绝 完全控制 □ □ 修改 □ □ 读取及运行 √ □ 列出文件夹目录 √ □ 读取 √ □ 写入 √ □
|
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
同时我们也注意到 db1.mdb 是否为“只读”文件对 ASPNET 的访问也会有一定影响。 (3) 上述权限设置可以直接设置给 ASPNET 用户自己,也可以设置给 Users 组,或者直接给 Everyone 组上述权限都是可以的。因为 ASPNET 隶属于 Users 组,可以通过 用户组 给 ASPNET 设置权限。 (4) NTFS 权限在文件或文件夹右击后得到的“属性”对话框-“安全”选项卡中设置,一般情况下,可以考虑给 Adminitrators 组以“完全控制”的权限,同时不要轻易在“拒绝”中打勾,有关 NTFS 权限设置的技巧,可以咨询网络管理员、网络安全专家的建议。 注:FAT, FAT32 格式的分区中不支持 NTFS 权限。 (5) Windows 2000 系列,Windows Server 2003 系列的“安全”选项卡默认是很容易找到的,但 Windows XP Professional 中的“安全”选项卡默认是关闭的,可以将“控制面板”-“文件夹选项”-“查看”选项卡中的“高级设置”中“使用简单共享(推荐)”一项的“√”去除,“确定”之后,再次按照上面的方法即可看到“安全”选项卡了。 总结: 综上所述,2、3、4法一起使用,是防止数据库被下载最基本,最行之有效的方法,既适用于对服务器有管辖权的网管,又适用于虚拟主机的用户,推荐每一个制作者同时必用这三种方法。 若你对服务器拥有管辖权,推荐再加上方法9,你的ACCESS数据库的安全性就可以大大提高了。飞飞Asp技@术乐园 假设网站被暴库(攻击者通过各种途径取到了数据库的URL)。飞飞Asp技术,乐园对于防范较弱的Web系统,这意味着数据库将被攻击者下载回去,网站全部后台数据泄露。
AcOol PS:很感谢影子鹰的文章,写得比较全,尤其最后的测试!根据我目前的掌握的知识,我建议: (1)虚拟主机的朋友采用在库中增加防下载表(方法2)与将标放置在web目录以外(方法5)的方法。 (2)服务器管理员可以直接采用增加MDB脚本映射(方法7)的办法。 (3)自己的服务器,那就随便了,不管是加脚本映射(方法7)、设置ODBC(方法7)、设置权限(方法9),随你了。 最后明确一下,修改复杂文件名(方法1)、修改为asp后缀(方法2的部分)、增加特殊字符(方法3)、加密数据库(方法4)都只能针对部分攻击现象,不能确保你数据不会被下载滥用,所以建议选择使用。
|
, "> AcOol PS:MS对Access库文件的加密功能跟没有一样,随手找个工具就拿到口令了,如果有兴趣手动都搞定他,所以千万别以为你给库加个口令就万事大吉了哦!
|