保证 RDS 应用程序的安全

本主题介绍 RDS 的安全信息。

重要

从 Windows 8 和 Windows Server 2012 开始,Windows 操作系统不再包含 RDS 服务器组件(有关更多详细信息,请参阅 Windows 8 和 Windows Server 2012 兼容性实用手册)。 Windows 的未来版本中将移除 RDS 客户端组件。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 RDS 的应用程序应迁移到 WCF 数据服务

Microsoft Internet Explorer 安全问题

将新的安全增强功能添加到 Microsoft Internet Explorer 后,某些 ADO 和 RDS 对象将仅限于在“安全”模式环境中运行。 这要求你了解这些问题,包括不同的区域、安全级别、限制性行为、不安全操作和自定义的安全设置。

安全性和 Web 服务器

如果在 Internet Web 服务器上使用 RDSServer.DataFactory 对象,请记住这样做会产生潜在的安全风险。 获取有效数据源名称 (DSN)、用户 ID 和密码信息的外部用户可以编写页面,以向该数据源发送任何查询。 如果想要对数据源进行更严格的访问,一种选择是取消注册并删除 RDSServer.DataFactory 对象 (msadcf.dll),改为使用带有硬编码查询的自定义业务对象

有关使用 RDSServer.DataFactory 对象的安全含义的详细信息,请参阅 Microsoft 安全网站上的 Microsoft 安全公告 MS99-025。

客户端模拟和安全性

如果 IIS Web 服务器的“密码验证”属性设置为 Windows NT 质询/响应验证(针对 Windows NT 4.0)或集成 Windows 身份验证(针对 Windows 2000),则会在客户端的安全上下文中调用业务对象。 这是 RDS 1.5 中的一项新功能,可实现通过 HTTP 进行客户端模拟。 在此模式下工作时,登录到 Web 服务器(IIS)不是匿名的,而是使用客户端计算机正在运行的用户 ID 和密码。 如果 ODBC DSN 设置为使用信任连接,则对数据库(如 SQL Server)的访问也发生在客户端的安全上下文中。 但是,仅当数据库与 IIS 位于同一台计算机上时才有效;客户端凭据不能传递到另一台计算机。

例如,客户端 John Doe 使用 userid=“JohnD”和 password=“<secret>”登录到客户端计算机。 John Doe 运行基于浏览器的应用程序,该应用程序需要访问 RDSServer.DataFactory 对象,以便通过在运行 IIS 的“MyServer”计算机上执行 SQL 查询来创建 Recordset 。 MyServer 是一个运行 Windows NT Server 4.0 的系统,设置为使用 Windows NT 质询/响应验证,其 ODBC DSN 选择了“使用信任连接”,并且服务器还包含 SQL Server 数据源。 在 Web 服务器上收到请求时,MyServer 将向客户端请求用户 ID 和密码。 因此,请求以“JohnD”/“<secret>”而不是IUSER_MyServer(这是匿名密码身份验证启用时的默认值)的形式登录 MyServer。 同样,登录到 SQL Server 时,将使用“JohnD”/“<secret>”。

因此,IIS Windows NT 质询/响应验证模式允许创建 HTML 页面,而无需显式提示用户输入登录数据库所需的用户 ID 和密码信息。 如果使用 IIS 基本身份验证,则还需要这样做。

密码验证

RDS 可与在以下三种密码身份验证模式之一下运行的 IIS Web 服务器进行通信:匿名、基本或 NT 质询/响应验证(在 Windows 2000 中称为集成 Windows 身份验证)。 这些设置定义 Web 服务器如何通过它控制访问权限,例如要求客户端计算机在 NT Web 服务器上具有显式访问权限。