增强Web的安全性( 二 )


(4) 输出数据HTML编码
输出数据HTML编码是指在将任何数据返回给用户前均应采用HTML编码,以防止跨站点的脚本攻击 。因为攻击者一旦破坏了数据库,便可向记录中输入脚本,此脚本随后被返回给用户并在浏览器中执行 。通过HTML编码,可将大多数脚本命令自动转换为无害文本 。
通过System.Web.HttpServerUtility 类中的 HtmlEncode 方法可实现HTML编码,如下所示:
SomeLabel.Text = Server.HtmlEncode(username);
(5) 信息加密存储
信息加密存储是指对如数据库连接字符串、用户秘密等敏感信息进行加密存储,以妥善保护数据 。
数据库连接字符串存放有包括数据库服务器的位置、数据库名称和用户名&密码等数据库连接信息,攻击者一旦设法读取字符串就可用它来访问数据库并对数据库进行恶意破坏 。通常我们可以采用以下方法保护加密连接字符串等秘密信息:加密连接字符串,将其存储在注册表中,并使用访问控制列表(ACL)确保只有系统管理员和ASP.NET辅助进程才能访问注册表项 。通过使用.Net Framework 的 System.Security.Cryptography 类中的 TripleDES 类提供的功能可实现对信息的加密 。
2.Internet信息服务(IIS)层安全
对IIS进行安全配置一般包括如下几方面内容,可最大程度地保障系统安全:
(1) 尽可能安装软件的最新版本;
(2) 尽可能安装软件的最新服务包和修补程序;
(3) 将磁盘上的默认Web站点位置从c:inetpub更改到其他卷,以防止攻击者通过输入“..”作为位置说明轻松访问C:驱动器;
(4) 使用IIS锁定工具(IIS Lockdown Tool)删除应用程序中未使用的所有其他动态内容类型,以减少攻击者可用来攻击的区域;
(5) 确保应用程序使用低权限的默认本地服务账户(ASP.NET账户)运行ASP.NET代码;
(6) 将ASP.NET账户添加到IIS锁定工具创建的本地“Web应用程序组”,以防进程在被偷袭时运行任何未得到授权的命令行可执行程序;
(7) 修改Web应用程序组权限,使其可运行应用程序需要的如.Net Framework C#编译器和资源转换器(Cse.exe和Cvtres.exe)等资源;
(8) 配置URLScan2.5,使其只允许应用程序中使用的扩展集,并阻止较长的请求(URLScan2.5是由IIS锁定工具安装的,是一个ISAPI过滤器,可根据查询长度和字符集等规则监视和过滤发送到IIS Web服务器的所有输入请求);
(9) 设置Web内容目录的访问权限,授予ASP.NET进程对内容文件的读访问权限,授予匿名用户对所提供内容的适当只读访问权限;
(10) 限制对IIS和URLScan的日志目录的访问,只有系统账户和系统管理员组才具有访问权限 。
3.Windows2000 Advanced Server操作系统层安全
为增强操作系统的安全性,应尽可能安装当时发布的最新服务包,尽可能关闭应用程序未用到的服务 。下面介绍几个注册表值 。
(1) 创建注册表项:nolmhash
在 Windows 2000 中,这是一个关键字,而在 Windows XP 和 Windows Server 2003 中,这是一个值 。
位置:HKLMSystemCurrent ControlSetControlLSA ;
用途:防止操作系统以 LM 散列格式存储用户密码 。此格式只用于不支持 NTLM 或 Kerberos 的 Windows 3.11 客户端 。创建和保留此 LM 散列的风险在于,如果攻击者设法将以此格式存储的密码解密,就可以在网络上的其他计算机上重复利用这些密码 。
(2) 创建注册表值:NoDefault Exempt
位置:HKLMSystemCurrent ControlSetServicesIPSEC ;
用途:默认情况下,IPSec 将允许源端口为 88 的传入通信查询 IPSec 服务,以获取连接到计算机的信息,而不管使用的是哪种 IPSec 策略 。通过设置此值,除了我们设置的 IPSec 过滤器允许的通信以外,不允许端口之间进行任何通信 。

推荐阅读