日期:2014-03-06  浏览次数:20459 次

在本章中

构建安全的分布式Web应用程序是一项极具挑战性的任务。用户应用程序的安全程度受应用程序中最薄弱环节的制约,而分布式应用程序会拥有许多环节。用户必须具备行之有效的知识,掌握多种产品和技术,令一个分布式应用程序的所有组成部分能够以某种安全方式进行联合工作。

本章描述了构建安全的分布式Web应用程序的基础知识:authentication, authorization, and secure communications.身份验证、授权和安全通信。本章还介绍了一组关键的安全原则,用户在建立分布式 Web 应用程序时应当重点注意。

目标

使用本章能够:

理解本指南的上下文中术语身份验证、授权和安全通信的意义。

理解高层ASP.NET Web 应用程序的整体体系结构。这意味着要理解构成体系结构的技术以及每种技术所提供的身份验证、授权和安全通信选项。

理解构成本指南其余部分基础的关键安全原则。

适用于:

本章适用于下列产品和技术:

Microsoft_ Windows_ XP 或 Windows 2000 Server 及后续操作系统

.NET 框架的1.0版本及后续版本

ASP.NET 1.0

如何使用本章

为从本章获得最大的收益:

用户必须熟悉微软的产品和技术,其中包括 Windows、Microsoft SQL Server™ 2000、Internet Information Services、.NET 框架及企业级服务 (COM+) 。

用户必须拥有开发 ASP.NET Web 应用程序的经历。

*
本页内容
互连环境互连环境基础知识基础知识与技术的配合 与技术的配合 设计原则设计原则小结小结

互连环境

如果您已经知道如何建立安全应用程序,那么在您建立.NET Web 应用程序时能够应用所掌握的知识吗?在目前基于 Web 的公布式应用程序环境中,Web 服务将公司与公司连到一起,将公司与客户连到一起,而且应用程序会有不同程序的显露,比如显露给 Intranet、Extranet 及 Internet 上的用户,对于这些,您能在这种应用环境中应用所掌握的知识吗?

请考虑一下这种互连环境的几点基本特性:

Web 服务使用的标准包括简单对象访问协议(Simple Object Access Protocol,SOAP)、可扩展标记语言(Extensible Markup Language,XML)和超文本传输协议(Hypertext Transport Protocol,HTTP)等标准,但是,它们基本使用纯文本传递潜在的机密信息。

Internet B2C应用程序通过Web传递机密数据。

Extranet B2B应用程序模糊了信任界线,允许合作伙伴公司中的其他应用程序调用应用程序。

在维护工资表和人力资源(HR)应用程序的机密性方面,Intranet 应用程序也存在风险。此类应用程序尤其容易因管理员不负责任和某些员工心怀不满而遭受到攻击。

返回页首返回页首

基础知识

任何成功应用程序的安全性策略都是建立在可靠方法之上的,需要将身份验证、授权与安全通信联合起来才能够提供机密数据的保密与完整。在继续介绍之前,对这些核心概念进行定义是非常重要的。在“ 身份验证与授权”章中,我们将介绍如何将各种身份验证与授权机制结合起来,提供可靠的安全设计。

身份验证

身份验证明确识别应用程序的客户端,客户端可能包括最终用户、服务、进程或计算机。在安全用语中,首先要指出的就是经过身份验证的客户。

身份验证在一个分布式 Web 应用程序的层间进行。最终用户最初由 Web 应用程序进行身份验证,一般需要提供用户名和口令。随后,当中间层的应用程序服务器(如果用户的体系结构中有这一层的话)和数据库服务器在处理最终用户的请求时,它们要执行身份验证,从而确认并处理请求。

在许多应用程序中,下游服务器和组件不对最终用户进行身份验证。它们只对作为上游应用程序的实体进行身份验证,信任该应用程序进行正确的身份验证并在转发请求之前进行授权。

适用于 ASP.NET 应用程序开发的许多身份验证机制将在“ 适用于 ASP .NET 应用程序的安全模型”一章中进行进一步的讨论。

授权

授权过程管理经过身份验证了的客户所允许进行访问的资源与操作。资源包括文件、数据库、表、行等,还包括系统级资源,如注册表项和配置数据。

首先,对于可度量和易管理的资源,许多 Web 应用程序通过方法、而不是直接对这些资源的操作进行授权访问。也即,对于系统级资源而言,使用平台级的安全,诸如 Windows ACL等,仍是必需的。许多最常见的应用程序级授权方案使用角色来对应用程序内部共享相同权限的用户组进行分类。

适用于 ASP.NET 应用程序开发者的各种授权选项与网关守卫将在“ 适用于 ASP .NET 应用程序的安全模式”一章中进行进一步的讨论。

安全通信

许多应用程序在应用程序层之间、从数据库服务器向浏览器、或者从浏览器向数据库服务器传递机密数据机密数据的示例包括有银行帐户的详细资料、信用卡号、工资数据,等等。此外,应用程序在网络间穿行时,必须保护登录凭据。

安全通信提供了下列两种特性:

隐私.隐私的概念是与数据保持私有和保密相联系的,不能被装备了网络监控软件的窃听者查看。隐私通常由加密机制提供。

完整性.安全通信通道还要保护数据在传输时不会被意外地或故意地(怀有恶意地)修改。完整性通常要使用信息鉴定码(Message Authentication Code,MAC)来提供。

同时在防火墙的内外使用安全通信是非常重要的,因为许多有害的信息显露和安全后门会出现在公司网络的内部。

安全通信及各种适用的方法将在“ 通信安全”一章