小知识:实现 Web 应用程序安全的捷径
日期:2006-04-30 荐:
目标与范围 本指南可帮助您设计、构建和配置抗攻击的 Web 应用程序。这些应用程序可以减少攻击的成功概率,并减轻受到攻击时受损的程度。图 1 显示了指南的范围及其使用的三层式方法:确保网络安全、确保主机安全和确保应用程序安全。 ·应用MFC开发高级应用程序·在VC 应用程序中读取文本数据·使用GWT开发AJAX应用程序·DirectSound应用程序开发快速入门·用Indy组件开发Socket应用程序·在Ajax应用程序中实现数据交换·VFP基础教程 第十一章 应用·MFC应用程序框架入门·Java桌面应用程序设计:SWT·用VC 建立Service服务应用程序
图 1. 指南的范围 本指南解决了跨三个物理层的安全问题,如图 1 所示,包括 Web 服务器、远程应用程序服务器和数据库服务器。每一层都面临网络层、主机层和应用程序层的安全问题。图 1 还显示了指南用来组织各种安全配置设置的配置类别(安全配置设置应用于主机和网络),以及用于组织应用程序的安全事项的应用程序缺陷类别。 整体的方法 Web 应用程序的安全问题始终是所有应用程序层和多个级别都要考虑的。攻击者可能会利用任何层次上的缺陷进行攻击。因此,本指南针对应用程序的安全问题提出一种整体方法,并将它应用于全部三个层次。解决安全问题的整体方法如图 2 所示。 图 2. 解决安全问题的整体方法 图 2 给出了本指南涉及的多个层,包括网络层、主机层和应用程序层。主机层包括操作系统、平台服务与组件、以及运行时服务与组件。平台服务与组件包括 Microsoft? SQL Server? 2000 和企业服务。运行时服务与组件还包括 ASP.NET 和 .NET 代码访问安全性。 保证网络的安全 安全网络的三个核心元素是路由器、防火墙和交换机。本指南涉及了全部三个元素。表 1 是每个元素的简要描述。 保证主机的安全 主机包括操作系统、.NET Framework 和相关服务与组件。无论主机是运行 IIS 的 Web 服务器、还是运行企业服务的应用程序服务器、或是运行 SQL Server 的数据库服务器,本指南皆遵循一种常规的安全方法(在各种服务器角色和类型中通用)。 指南使用了不同的类别来组织必须采取的预防措施和必须配置的设置。使用这些配置类别,您可以自顶向下系统地执行安全过程,或者挑选特定的类别来完成特定的步骤。 图 3 显示了指南的第 IV 部分“确保网络、主机和应用程序的安全”所使用的配置类别。 图 3. 主机安全类别 保证应用程序的安全 本指南定义了一组应用程序缺陷类别,它们可帮助您设计和构建安全的 Web 应用程序,评估现有应用程序的安全性。这些类别是通用的,在分层式体系结构的多种技术和组件中适用。这些类别在设计、构建和安全性评估单元中进行重点讨论。 找出威胁 在成功地应用安全性措施之前,您需要知道自己面临的威胁。威胁可能来自外部,如来自 Internet 的攻击者;威胁也可能来自内部,如来自心怀不满的雇员或者管理员。本指南将帮助您使用两种方法找出威胁: 列出在网络层、主机层和应用程序层上最具影响的 Web 应用程序威胁。 展示了威胁建模的过程,帮助您找出哪些威胁与自己的应用程序相关。 图 4 给出了本指南中介绍的威胁建模过程概览。 图 4. 威胁建模的过程 图 4 中给出的步骤可描述如下: 1.找出资源。 找出系统必须要保护的有价值资源。 2.创建体系结构概述。 使用简单的图表来记录应用程序的体系结构,包括子系统、信任边界和数据流。 3.分解应用程序。 分解应用程序的体系结构,包括基础网络和主机基础结构设计,目标是创建应用程序的安全配置文件。安全配置文件旨在揭示应用程序设计、实现或部署配置中存在的缺陷。 4.找出威胁。 牢记攻击者的目标,借助应用程序体系结构和潜在缺陷的信息找出可能会影响应用程序的威胁。 5.记录威胁。 使用定义了核心属性集(处理任意威胁都必须获取这些属性)的通用威胁模板记录各种威胁。 6.评估威胁。 评估威胁的级别,然后区分优先顺序。首先处理的是最严重的威胁,即风险最大的威胁。评估过程可权衡威胁发生时造成的损害的概率。通过比较威胁的风险与应对措施的成本可能会发现,有些威胁可能不值得采取任何应对措施。 在产品生命周期中应用指南 本指南的不同部分要应用于产品开发生命周期中的不同阶段。指南中各单元的出现顺序反映了生命周期的典型阶段。图 5 给出了单元与角色的关系。
图 5. 单元与产品生命周期的关系。 注 威胁建模和安全性评估(特别是代码审查和部署审查单元)在构建新的 Web 应用程序或者审查现有应用程序时应用。 实施指南内容 本指南以任务为基础并按单元进行划分,每个单元与产品开发生命周期的各种阶段以及涉及的各种角色相关联。这些角色包括架构师、开发人员、系统管理员及安全性专家。您可以挑选特定单元来执行特定的任务,或者将一系列单元应用于产品开发生命周期的某个阶段。 表 3 显示的检查表突出强调了本指南涉及的、确保网络、主机和应用程序的安全所需的各个领域。 谁做什么? 设计并构建安全的应用程序是一种由多种角色协作完成的工作。本指南的组织方式为讨论每一角色以其需考虑的相关安全因素。要处理的类别和问题概述如下。 RACI 图表 RACI 代表: Responsible(负责执行任务的角色) Accountable(对任务负全责的角色) Consulted(提供输入辅助执行任务的人员) Keep Informed (拥有既定特权、应及时得到通知的人员) 在开始执行项目时,您可通过 RACI 图表来找出与关键安全性相关的任务,以及执行每一任务的相关角色。 表 4 阐明了本指南使用的简单 RACI 图表。(标题行列出了不同角色;第一列是任务,其余各列则依据角色描述了不同任务的责任级别。) 小结 本“捷径”单元重点说明了指南中使用的基本方法,目的是帮助您设计和开发抗攻击的 Web 应用程序,然后评估现有应用程序的安全性。此外,本文还指明依据项目生命周期中的特定角色来应用指南内容的方式。
标签: