1、 毕 业 设 计 (论文 ) 外 文 文 献 翻 译 专业 计算机科学与技术 学生姓名 班级 学号 指导教师 信息工程学院 1 中文译文 Web 应用程序的基本安全做法 即使您对应用程序安全性的体验和了解非常有限,也应采取一些基本措施来保护您的 Web 应用程序。以下各部分提供了适用于所有 Web 应用程序的最低安全性准则。常规 Web 应用程序安全性建议;使用最少特权运行应用程序;了解您的用户;防止恶意用户的输入;安全地访问数据库;创建安全的错误消息;保证敏感信息的安全;安全地使用 Cookie;防止拒绝服务威胁。 1.常规 Web 应用程序安全性建议; 如果恶意用户可以使用简单方法进入您的
2、计算机,即使是最精心设计的应用程序安全性也会失败。常规 Web 应用程序安全性建议包括以下内容:经常备份数据,并将备份存放在安全的场所;将您的 Web 服务器放置在安全的场所,使未经授权的用户无法访问它、关闭它、带走它,等等。使用 Windows NTFS 文件系统,不使用 FAT32。 NTFS 的安全性比 FAT32 高得多。使用不易破解的密码,保护 Web 服务器和同一网络上的所有计算机的安全。 遵循用于确保 Internet 信息服务 (IIS) 安全的最佳做法。关闭任何不使用的端口并关闭不使用的服务。运行监视网站通信量的病毒检查程序。使用防火墙。了解和安装来自 Microsoft 和
3、其他供应商的最新安全更新。使用 Windows 事件日志记录,并且经常检查这些日志,以查找可疑活动。这样的活动包括:反复尝试登录您的系统,以及向您的 Web 服务器发出数量巨大的请求。 2.使用最少特权运行应用程序 当您的应用程序运行时,它运行在一个具有本地计算机(还可能是远程计算机)的特定特权的上下文中。有关配置应 用程序标识的信息,请参见 配置 ASP.NET 进程标识。若要以最少特权运行,请遵循以下准则: 不要以系统用户(管理员)身份运行应用程序。在具有最少实用特权的用户上下文中运行应用程序。 设置应用程序所需的所有资源上的权限( ACL 或访问控制列表)。使用最严格的设置。例如,如果在
4、您的应用程序中是可行的,则将文件设置为只读。有关 ASP.NET 应用程序标识所需的最少 ACL 权限的列表,请参见 ASP.NET 必需的访问控制列表 (ACL)。将您的 Web 应用程序的文件保存在应用程序根目录下的一个文件夹中。 不要让用户指定在应用程序中进行文件访问的路径。这样有助于防止用户访问服务器的根目录。 3.了解您的用户 在许多应用程序中,用户有可能不必提供凭据即可访问网站。如果是这样,则您的应用程序通过在预定义用户的上下文中运行即可访问资源。默认情况下,此上下文是 Web 服务器上的本地 ASPNET 用户( Windows 2000 或 Windows XP)或 NETWO
5、RK SERVICE 用户 (Windows Server 2003)。若要仅允许已授权用户进行访问,请遵循以下准则: 如果您的应用程序是 Intranet 应用程序,则将其配置为使用 Windows 集成安全性。这样,用户的登录凭据就可以用于访问2 资源。如果您需要从用户收集凭据,则使用其中一种 ASP.NET 身份验证策略。有关示例,请参见 ASP.NET Forms 身份验证概述。 4.防止恶意用户的输入 通常,决不假定从用户获得的输入是安全的。对恶意用户来说,从客户端向您的应用程序发送潜在危险的信息是很容易的。若要帮助防止恶意输入,请遵循以下准则: 在窗体中,筛选用户输入以查找 HTM
6、L 标记,其中可能包含脚本。有关详细信息,请参见 如何:通过对字符 串应用 HTML 编码在 Web 应用程序中防止脚本侵入。决不回显(显示)未经筛选的用户输入。在显示不受信任的信息之前,对 HTML 进行编码以将潜在有害的脚本转换为显示字符串。类似地,决不将未经筛选的用户输入存储在数据库中。如果要接受来自用户的一些 HTML,则手动筛选它。在您的筛选器中,显式定义将要接受的内容。不要创建一个试图筛选出恶意输入的筛选器;因为预料到所有可能的恶意输入是非常困难的。不要假定您从标头(通常通过 Request 对象)获得的信息是安全的。对查询字符串、 Cookie 等采取安全措施。 注意,浏览器向服
7、务器报告的信息(用户代理信息)可以被假冒(如果此信息在您的应用程序中相当重要)。如有可能,不要将敏感信息(如隐藏字段或 Cookie)存储在可从浏览器访问的位置。例如,不要将密码存储在 Cookie 中。 5.安全地访问数据库 数据库通常具有它们自己的安全性。 Web 应用程序安全性的一个重要方面是设计一种应用程序安全地访问数据库的方式。请遵循这些指导: 使用数据库的内在安全性来限制可以访问数据库资源的人员。确切的策略取决于您的数据库和应用程序: 如果在您的应用程序中切实可行,请使用 Windows 集成安全性以便只有 Windows 授权的用户才能访问数据库。集成安全性比使用 SQL Ser
8、ver 标准安全性更安全。如果您的应用程序使用匿名访问,请创建具有非常有限的权限的单个用户,并以此用户身份连接来执行查询。不要通过串联涉及用户输入的字符串创建 SQL 语句。相反,创建参数化查询并使用用户输入设置参数值。 如果您必须将用户名和密码存储在某个位置以用作数据库登录凭据,请安全地存储它们。如果可行,请对它们进行加密或计算哈希值。 6.创建安全的错误消息 如果您不小心,恶意用户就可以从应用程序显 示的错误消息推断出有关您的应用程序的重要信息。请遵循这些指导: 不要编写会回显可能对恶意用户有用的信息(例如用户名)的错误消息。将应用程序配置为不向用户显示详细错误。如果为进行调试而要显示详细错误消息,请先检查该用户是否为 Web 服务器的本地用户。使用 customErrors 配置元素控制谁可以查看服务器发出的异常。对于容易发生错误的情况(如数据库访问)创建自定义错误处理方式。 7.保证敏感信息的安全 “敏感信息”是需要保密的任意信息。密码或加密密钥即是典型的敏感信息。如果恶意用户可以获得敏感信息,则该信 息保护的数据将受到威胁。请遵循这些