为你的ASP.NET的网站搭一个安全的窝
网络通信
现在利用微软的ASP.NET建立网站的朋友是越来越多了,由于ASP.NET 1.1本身的原因和编写、配置服务器的不完善等问题,利用ASP.NET搭建的网站出现了一些安全的问题,下面我就如何建立一个安全的ASP.NET技术的网站和大家交流一下自己的经验和看法。
一、IIS的配置
一般来说,大家建立微软技术的网站(ASP、ASP.NET)都是通过IIS, 包括有些空间提供商给你的空间,也是使用IIS来做服务的。如何配置一个安全的IIS就成为了一个重要的环节。
1.请尽快安装 Microsoft站点上列出的所有公用安全性修补程序,以确保拥有最新的防御能力。安装最新的 Service Pack 和修补程序是一种非常关键的安全方案。
2.在建立Web站点的时候,尽量不要把目录和文件放到常规的c:\inetpub\这样的目录下,一旦被攻击者得手的话,他将很容易知道我们这个盘的结构。
3.尽量使用低权限的默认本地服务账户(ASPNET 账户)运行 ASP.NET 代码(图1)。
4.设置你的站点所在目录的权限,这里推荐你把站点放到NTFS格式的盘上。我们可以为ASPNET 账户配置访问此目录的相应权限(图2)。
5.可以免费获得 IIS Lockdown Tool。它是一个很出色的资源,可以通过它来配置和锁定诸如:将ASPNET 账户添加到 IIS 锁定工具创建的本地“Web 应用程序组”,用这样的操作,来提高系统的安全性。
下载地址是: http://www.microsoft.com/downloads/details.aspx?FamilyID=dde9efc0-bb30-47eb-9a61-fd755d23cdec&displaylang=en
二、ASP.NET站点安全设置
1.窗体身份验证
推荐大家使用窗体身份验证来建立自己的ASP.NET站点,当用户通过窗体身份验证登录时,系统将创建一个加密的 Cookies,用于在整个站点中跟踪用户。(从技术角度而言,Cookies 是一个由 Web 站点生成的纯文本字符串,可进入用户的 Web 浏览器内存,用于对浏览站点的用户进行标志。)
如果用户在未登录的情况下请求一个安全页面,系统会将此用户重定向到登录页面,所有这些只需要使用应用程序中基于XML的Web.config文件进行配置就可以实现。
在应用程序的根文件夹中,向 Web.config 文件的<system.web> 部分添加以下几行代码,以请求基于窗体的身份验证并指定登录页的位置。
<authentication mode=“Forms”>
<forms loginUrl=“Login.aspx” name=“test”/>
</authentication>
此顶层配置文件应用到此应用程序的所有页面。然后用第二个Web.config 文件创建子目录。此文件只应用到应用程序中的少数几个选定页面,以防未经身份验证的用户(即匿名用户)对它进行访问。第二个.config文件继承了顶层.config 文件的身份验证信息。
<?xml version=“1.0” encoding=“utf-8” ?>
<configuration>
<system.web>
<authorization>
<deny users=“?” />
</authorization>
</system.web>
</configuration>
通过这种方式使用这两个.config 文件,未经身份验证的用户只能访问主页和其他少数几个页面,而已通过身份验证的用户则还可以访问站点上那些需要用户登录的页面。
2.充分地利用微软提供的验证控件来验证用户输入数据的有效性,另外特别注意输入文本框里面的数据一定要做过滤,防止SQL的注入形式的攻击.
3.任何数据在返回给用户前均采用 HTML 编码。这只须使用 System.Web.HttpServerUtility 类中的 HtmlEncode 方法即可实现,如下所示。
SomeLabel.Text = Server.HtmlEncode(username);
HTML 编码有助于防止跨站点的脚本攻击。攻击者一旦破坏了数据库,便可向记录中输入脚本,此脚本随后返回给用户并在浏览器中执行。通过 HTML 编码,大多数脚本命令都自动转换为无害文本。
4.另外就是如果你的站点连接数据库,比如SQL Server2000或者Access的话,请务必要使用加密算法把连接串加密存储,特别是喜欢放到Web.Config文件里面的朋友更要注意,尽管Web.Config是防止下载的。
5.另外你如果使用数据库,并且编写了SQL语句,请注意尽量参数化,不要直接写一个SQL语句比如:SELECT NAME,PASSWORD FROM USERS WHERE STAT=1,这样的方式是不安全的。
最后通过上面的设置和设计时留意了注意事项,相信大家一定能够对自己的ASP.NET建立的站点和网络家园有信心。另外提醒大家注意,随着微软的ASP.NET2.0即将推出,相信我们建立的站点的安全将更加的有保障。

