测试环境:Windows 2003 + IIS6.0 + Access数据库
运行上传的asp助手,在浏览其他分区的时候提示“路径未找到”,用asp探针查看发现是因为对分区没有读取权限。
我们知道,匿名访问web使用系统中的“IUSR_主机名”这个用户,只要限制了这个用户的读取权限,即能限制访问者遍历服务器目录,保护服务器数据不被非法访问。
操作步骤:
1. 我的电脑,磁盘安全属性。
2. 首先删除Everyone组。一般在服务器上看见Everyone就要删。
3. 添加IUSR_Hostname用户,对其设置“拒绝读取和运行”权限。如图。
4. 应用。会出现提示,不用理会。
5. 设置完成。
这是非web站点分区的NTFS设置,对存放web站点的分区还要进行额外的设置才可以正常访问。否则在访问网站的时候因为没有运行权限而无法浏览。
假设我的网站放在F:\www下。在按照上述五个步骤设置完F区的NTFS权限后,要进行下面步骤的设置:
1. 进入www目录安全属性。这时可以看到IUSR_hostname这个用户的权限设置为拒绝读取和运行,并且checkbox是灰的,无法修改。
2. 点高级,把下面允许继承的checkbox的勾勾掉,在弹出的提示中选“复制”。
3. 确定。这时你可以看到刚才不可修改的checkbox现在都可以修改了。
4. 更改IUSR_hostname用户权限,改为只允许“读取”。
5. 确定。
至此,所有分区的NTFS设置都已完成。
这时你再把asp探针和asp助手上传到服务器上运行,就会收到权限不足的提示了。
对C盘设置的权限不自动继承,需要对每个文件夹再进行设置拒绝访问权限。Program Files、Documents and Settings和Inetpub这几个文件夹一定要设置。
Windows或Winnt目录一定不要这样设置,否则在运行asp程序时:(动网除外,原因未知。)
如果用ODBC连接的Access数据库,那么会报错:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x1844 Thread 0x1b40 DBC 0x554cc59c Jet'。
如果用OLEDB连接的Acess数据库,会报错:未指定错误。
Windows或Winnt目录的设置如图:“列出文件夹/读取数据”这个不要设置拒绝。
对Windows或Winnt目录这样设置后,用asp助手还是可以浏览到目录的内容,但没有权限打开其中的文件浏览。
另外,如果服务器硬盘这样设置,能用什么方法进一步得到主机权限,还请赐教!!
此文仅是给大家提供一个保护服务器数据的思路,请根据自己的需要进行设置。有不对的地方希望大家指出!