如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。
在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、 “Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。
如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”:
如果安装了其他运行环境,比如PHP等,则根据PHP的环境功能要求来设置硬盘权限,一般是安装目录加上users读取运行权限就足够了,比如c:\php的话,就在根目录权限继承的情况下加上users读取运行权限,需要写入数据的比如tmp文件夹,则把user的写删权限加上,运行权限不要,然后把虚拟主机用户的读权限拒绝即可。如果是mysql的话,可以把mysql安装目录只要同硬盘根目录权限就可以了。如果是winwebmail,则最好建立独立的应用程序池和独立IIS用户,然后整个安装目录有user用户的读/运行/写/权限,IIS用户则相同,这个IIS用户就只用在winwebmail的WEB访问中,其他IIS站点切勿使用,安装了winwebmail的服务器硬盘权限设置后面举例
硬盘或文件夹: C:\Inetpub\
硬盘或文件夹: C:\Inetpub\AdminScripts
硬盘或文件夹: C:\Inetpub\wwwroot
同Internet 来宾帐户一样的权限
拒绝权限
创建文件夹/附加数据/:拒绝
写入属性/:拒绝
写入扩展属性/:拒绝
删除子文件夹及文件/:拒绝
删除/:拒绝
硬盘或文件夹: C:\Inetpub\wwwroot\aspnet_client
硬盘或文件夹: C:\Documents and Settings
硬盘或文件夹: C:\Documents and Settings\All Users
绝对不能加上写入权限
硬盘或文件夹: C:\Documents and Settings\All Users\「开始」菜单
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
列出文件夹、读取属性、读取扩展属性、创建文件、创建文件夹、写入属性、写入扩展属性、读取权限
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\DSS\MachineKeys
列出文件夹、读取属性、读取扩展属性、创建文件、创建文件夹、写入属性、写入扩展属性、读取权限
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\HTML Help
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Cm
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Downloader
硬盘或文件夹: C:\Documents and Settings\All Users\Application Data\Microsoft\Media Index
创建文件夹/附加数据
写入属性
写入扩展属性
读取权限
创建文件夹/附加数据
写入属性
写入扩展属性
硬盘或文件夹: C:\Documents and Settings\All Users\DRM
Everyone的权限比较特殊,默认安装后已经带了
主要是要把IIS访问的用户组加上所有权限都禁止
或某个虚拟主机用户组
硬盘或文件夹: C:\Documents and Settings\All Users\Documents (共享文档)
硬盘或文件夹: C:\Program Files
硬盘或文件夹: C:\Program Files\Common Files\Microsoft Shared\web server extensions
硬盘或文件夹: C:\Program Files\Microsoft SQL Server\MSSQL (程序部分默认装在C:盘)
硬盘或文件夹: E:\Program Files\Microsoft SQL Server (数据库部分装在E:盘的情况)
硬盘或文件夹: E:\Program Files\Microsoft SQL Server\MSSQL (数据库部分装在E:盘的情况)
硬盘或文件夹: C:\Program Files\Internet Explorer\iexplore.exe
硬盘或文件夹: C:\Program Files\Outlook Express
硬盘或文件夹: C:\Program Files\PowerEasy5 (如果装了动易组件的话)
硬盘或文件夹: C:\Program Files\Radmin (如果装了Radmin远程控制的话)
对应的c:\windows\system32里面有两个文件
r_server.exe和AdmDll.dll
要把Users读取运行权限去掉
默认权限只要administrators和system全部权限
硬盘或文件夹: C:\Program Files\Serv-U (如果装了Serv-U服务器的话)
这里常是提权入侵的一个比较大的漏洞点
一定要按这个方法设置
目录名字根据Serv-U版本也可能是
C:\Program Files\RhinoSoft.com\Serv-U
硬盘或文件夹: C:\Program Files\Windows Media Player
硬盘或文件夹: C:\Program Files\Windows NT\Accessories
硬盘或文件夹: C:\Program Files\WindowsUpdate
硬盘或文件夹: C:\WINDOWS
硬盘或文件夹: C:\WINDOWS\system32
或某个虚拟主机用户组
读取权限 :拒绝
硬盘或文件夹: C:\WINDOWS\system32\config
或某个虚拟主机用户组
读取权限 :拒绝
硬盘或文件夹: C:\WINDOWS\system32\inetsrv\
或某个虚拟主机用户组
硬盘或文件夹: C:\WINDOWS\system32\inetsrv\ASP Compiled Templates
或某个虚拟主机用户组
硬盘或文件夹: C:\WINDOWS\system32\inetsrv\iisadmpwd
硬盘或文件夹: C:\WINDOWS\system32\inetsrv\MetaBack
或某个虚拟主机用户组
ASP.NET 进程帐户所需的 NTFS 权限
目录 所需权限
Temporary ASP.NET Files%windir%\Microsoft.NET\Framework\{版本}Temporary ASP.NET Files
进程帐户和模拟标识:
完全控制
临时目录 (%temp%)
进程帐户
完全控制
.NET Framework 目录%windir%\Microsoft.NET\Framework\{版本}
进程帐户和模拟标识:
读取和执行
列出文件夹内容
读取
.NET Framework 配置目录%windir%\Microsoft.NET\Framework\{版本}\CONFIG
进程帐户和模拟标识:
读取和执行
列出文件夹内容
读取
网站根目录
C:\inetpub\wwwroot
或默认网站指向的路径
进程帐户:
读取
系统根目录
%windir%\system32
进程帐户:
读取
全局程序集高速缓存
%windir%\assembly
进程帐户和模拟标识:
读取
内容目录
C:\inetpub\wwwroot\YourWebApp
(一般来说不用默认目录,管理员可根据实际情况调整比如D:\wwwroot)
进程帐户:
读取和执行
列出文件夹内容
读取
注意 对于 .NET Framework 1.0,直到文件系统根目录的所有父目录也都需要上述权限。父目录包括:
C:\
C:\inetpub\
C:\inetpub\wwwroot\
一般网站最容易发生的故障的解决方法
1.出现提示网页无法显示,500错误的时候,又没有详细的提示信息
可以进行下面的操作显示详细的提示信息:IE-工具-internet选项-高级-友好的http错误信息提示,将这选项前面不打勾,则可以看到详细的提示信息了
2.系统在安装的时候提示数据库连接错误
一是检查const文件的设置关于数据库的路径设置是否正确
二是检查服务器上面的数据库的路径和用户名、密码等是否正确
3.IIS不支持ASP解决办法:
IIS的默认解析语言是否正确设定?将默认改为VBSCRIPT,进入IIS,右键单击默认Web站点,选择属性,在目录安全性选项卡的匿名访问和身份验证控制中,单击编辑,在身份验证方法属性页中,去掉匿名访问的选择试试.
4.FSO没有权限
FSO的权限问题,可以在后台测试是否能删除文件,解决FSO组件是否开启的方法如下:
首先在系统盘中查找scrrun.dll,如果存在这个文件,请跳到第三步,如果没有,请执行第二步。
在安装文件目录i386中找到scrrun.dl_,用winrar解压缩,得scrrun.dll,然后复制到(你的系统盘)C:\windows\system32\目录中。 运行regsvr32 scrrun.dll即可。
如果想关闭FSO组件,请运行regsvr32/u scrrun.dll即可
关于服务器FSO权限设置的方法,给大家一个地址可以看看详细的操作:http://www./article/18653.htm
5.Microsoft JET Database Engine 错误 '80040e09' 不能更新。数据库或对象为只读
原因分析:
未打开数据库目录的读写权限
解决方法:
( 1 )检查是否在 IIS 中对整个网站打开了 “ 写入 ” 权限,而不仅仅是数据库文件。
( 2 )检查是否在 WIN2000 的资源管理器中,将网站所在目录对 EveryOne 用户打开所有权限。具体方法是:
打开 “ 我的电脑 ”---- 找到网站所在文件夹 ---- 在其上点右键 ---- 选 “ 属性 ”----- 切换到 “ 安全性 ” 选项卡,在这里给 EveryOne 用户所有权限。
注意: 如果你的系统是 XP ,请先点 “ 工具 ”----“ 文件夹选项 ”----“ 查看 ”----- 去掉 “ 使用简单文件共享 ” 前的勾,确定后,文件夹 “ 属性 ” 对话框中才会有 “ 安全性 ” 这一个选项卡。
6.验证码不能显示
原因分析:
造成该问题的原因是 Service Pack 2 为了提高系统的稳定性,默认状态下是屏蔽了对 XBM,也即是 x-bitmap 格式的图片的显示,而这些验证码恰恰是 XBM 格式的,所以显示不出来了。
解决办法:
解决的方法其实也很简单,只需在系统注册表中添加键值 "BlockXBM"=dword:00000000 就可以了,具体操作如下:
1》打开系统注册表;
2》依次点开HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer\\Security;
3》在屏幕右边空白处点击鼠标右键,选择新建一个名为“BlockXBM”为的 DWORD 键,其值为默认的0。
4》退出注册表编辑器。
如果操作系统是2003系统则看是否开启了父路径
7.windows 2003配置IIS支持.shtml
要使用 Shtml 的文件,则系统必须支持SSI,SSI必须是管理员通过Web 服务扩展启用的
windows 2003安装好IIS之后默认是支持.shtml的,只要在“WEB服务扩展”允许“在服务器前端的包含文件”即可 (www.)
8.如何去掉“处理 URL 时服务器出错。请与系统管理员联系。”
如果是本地服务器的话,请右键点IIS默认网站,选属性,在主目录里点配置,选调试。 选中向客户端发送详细的ASP错误消息。 然后再调试程序,此时就可以显示出正确的错误代码。
如果你是租用的空间的话,请和你的空间商联系
<Context docBase="C:/Program Files/Apache Software Foundation/Tomcat5.5/webapps/FengYue" path="" debug="0" reloadable="true" privileged="true">
<Resource name="aaa/OracleDS" type="javax.sql.DataSource"
password="maxtie17061706"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="2"
maxWait="5000"
username="maxtie"
url="jdbc:oracle:thin:@192.168.0.13:1521:mmis"
maxActive="4" />
</Context>
这个是默认工程加连接池一起配置了,如果想不作为默认工程,仅仅改变path就可以了啊
如果只单纯配默认工程:
<Context docBase="C:/Program Files/Apache Software Foundation/Tomcat5.5/webapps/FengYue" path="" debug="0" reloadable="true" privileged="true"></Context>
这一句就可以了啊,关键就是这个path啊
最后是测试代码,必须在web工程中运行。
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/aaa/OracleDS");
conn = ds.getConnection();