创建安全的ASP.NET虚拟主机
首先,我们要明白一个概念就是对于ASP.NET程序来说,它能作什么,都是由 NETWORK SERVER 用户(Win2003)或 ASPNET 用户(Win2000) 所拥用的权限来限定。所以,我们只要对 NETWORK SERVER 用户 或 ASPNET 用户 的权限进行操作。
一、保护各个硬盘不能被ASPNET所访问、操作。
我们有一小段非常简单的程序来对我们进行的权限设置进行检验。这个小程序是列出某个目录下的所有子目录,源码如下:
<%@ Import NameSpace="System.IO" %> <script language="c#" runat="server"> private void Page_Load(object sender, System.EventArgs e) { string[] strings=Directory.GetDirectories("C:\\"); for (int i=0;i<strings.Length;i++) { Response.Write(strings[i] + "<BR/>"); } } </script> |
在没有作任何设置之前,我们运行这段程序,可以很容易的获得正常的结果。如图:
这是我们不愿意看到的。我们只希望ASPNET对自己目录进行操作,而不能干涉其它任意目录。
下面我们就以Win2000系统下为例,一步步的看一下如何来达到这种目地。
首先我们找到F盘,并在其上点击右键>属性 并切换到 安全 选项卡,点击右下方的 高级按钮,进入高级安全设置
如图:
点击 添加 按钮,查找并且选择 ASPNET 用户:
然后点击 确定按钮,这时会出现一个窗口,让您选择此用户所能拥有的权限。在这里,我们将除了 "读取属性" 这个权限不拒绝以外,其它的全部拒绝(不将"读取属性"这一项拒绝是非常重要的,如果将其拒绝,则会导致ASP.NET程序在拥有权限的目录下也不能完成所有的操作(如在自己的目录下创建目录时提示: 未找到路径“X:\”的一部分 这样的错误)
如图:
点击 确定 完成这一系统的操作,我们再运行上面的程序,看看是否还能取出其它目录的子目录列表:
这个时候,系统就会提示出错...这样我们的系统的安全性就得到保证了。
这样,ASP.NET程序就只能对其所在目录进行操作,而无法涉及到其它的文件目录。
如何让ASP.NET程序拥有其所在目录的所有权限请参考:http://www.xfoksite.net/Support/3/2005/01/24/58.htm
欢迎大家扫描下面二维码成为我的客户,扶你上云