Fork me on GitHub

创建安全的ASP.NET虚拟主机

随着基于.net平台的应用程序的数量级增加,提供.net空间的虚拟主机商也越来越多,但是有不少的虚拟主机提供商对.net环境的权限分配并不是非常的熟悉,从而导致.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

posted @ 2005-11-02 10:18  张善友  阅读(638)  评论(0编辑  收藏  举报