首先,我们要明白一个概念就是对于ASP.NET程序来说,它能作什么,都是由 NETWORK SERVER 用户(Win2003)或 ASPNET 用户(Win2000) 所拥用的权限来限定。所以,我们只要对 NETWORK SERVER 用户 或 ASPNET 用户 的权限进行操作。
一、保护各个硬盘不能被ASPNET所访问、操作。
我们有一小段非常简单的程序来对我们进行的权限设置进行检验。这个小程序是列出某个目录下的所有子目录,源码如下:
string[] strings=Directory.GetDirectories("k://WINNT"); for (int i=0;i<strings.Length;i++) { Response.Write(strings[i]); } |
在没有作任何设置之前,我们运行这段程序,可以很容易的获得正常的结果。如图:
显然这是我们不希望看到的。我们只希望ASPNET对自己目录进行操作,而不能干涉其它任意目录。
下面我们就以Win2003系统下为例,一步步的看一下如何来达到这种目地。
首先我们找到K盘,并在其上点击右键>共享与安全 并切换到 安全 选项卡,点击右下方的 高级按钮,进入高级安全设置
如图:
点击 添加 按钮,查找并且选择 NETWORK SERVICE 用户:
然后点击 确定按钮,这时会探出一个窗口,让您选择此用户所能拥有的权限。在这里,我们将除了 "读取属性" 这个权限不拒绝以外,其它的全部拒绝(不将"读取属性"这一项拒绝是非常重要的,如果将其拒绝,则会导致ASP.NET程序在拥有权限的目录下也不能完成所有的操作(如在自己的目录下创建目录时提示: 未找到路径“X:/”的一部分 这样的错误)
如图:
点击 确定 完成这一系统的操作,我们再运行上面的程序,看看是否还能取出其它目录的子目录列表:
这个时候,系统就会提示出错...这样我们的系统的安全性就得到保证了。
这样,ASP.NET程序就只能对其所在目录进行操作,而无法涉及到其它的文件目录。