Compartir a través de


Características de diseño de seguridad de ADO

En las secciones siguientes se describen las características de diseño de seguridad de los Objetos de datos ActiveX (ADO) 2.8 y versiones posteriores. Estos cambios se realizaron en ADO 2.8 para mejorar la seguridad. ADO 6.0, que se incluye en Windows DAC 6.0 en Windows Vista, es funcionalmente equivalente a ADO 2.8, que se incluyó en MDAC 2.8 en Windows XP y Windows Server 2003. En este tema se proporciona información sobre cómo proteger mejor las aplicaciones en ADO 2.8 o versiones posteriores.

Importante

Si va a actualizar la aplicación desde una versión anterior de ADO, se recomienda probar la aplicación actualizada en un equipo que no sea de producción antes de implementarla en los clientes. De este modo, puede asegurarse de que conoce los problemas de compatibilidad antes de implementar la aplicación actualizada.

Escenarios de acceso a archivos de Internet Explorer

Las siguientes características afectan a cómo funciona ADO 2.8 y versiones posteriores cuando se usa en páginas web con scripts en Internet Explorer.

Cuadro de mensaje de advertencia de seguridad revisado y mejorado que ahora se usa para alertar a los usuarios

Para ADO 2.7 y versiones anteriores, aparece el siguiente mensaje de advertencia cuando una página web con script intenta ejecutar código de ADO desde un proveedor que no es de confianza:

This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.

Para ADO 2.8 y versiones posteriores, el mensaje anterior ya no aparece. En su lugar, aparece el siguiente mensaje en este contexto:

This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.

El mensaje anterior permite al usuario tomar una decisión informada, además de conocer las consecuencias de cualquiera de las opciones siguientes:

  • Si el usuario confía en el sitio, al hacer clic en Aceptar, se permitirá que todo el código seguro para disco (todos los métodos y las propiedades de ADO con las excepciones de las API accesibles para disco descritas más adelante en este tema) se ejecuten en la ventana del explorador.

  • Si el usuario no confía en el sitio, al hacer clic en Cancelar, se bloquea totalmente la ejecución del código de ADO para el acceso a los datos.

Código accesible para disco limitado ahora a sitios de confianza

Se realizaron cambios de diseño adicionales en ADO 2.8 que restringen específicamente la capacidad de un conjunto limitado de API, lo que podría exponer la posibilidad de leer o escribir en archivos en el equipo local. Estos son los métodos de API que se han restringido aún más para la seguridad al ejecutar Internet Explorer:

Para estos conjuntos limitados de funciones potencialmente accesibles para disco, se produce el siguiente comportamiento para ADO 2.8 y versiones posteriores, si se ejecuta algún código que use estos métodos en Internet Explorer:

  • Si el sitio que proporcionó el código se agregó anteriormente a la lista de zonas Sitios de confianza, el código se ejecuta en el explorador y se concede acceso a los archivos locales.

  • Si el sitio no aparece en la lista de zonas Sitios de confianza, se bloquea el código y se deniega el acceso a los archivos locales.

    Nota

    En ADO 2.8 y versiones posteriores, el usuario no recibe alertas ni se recomienda agregar sitios a la lista de zonas Sitios de confianza. Por lo tanto, la administración de la lista Sitios de confianza es responsabilidad de aquellos que implementan o admiten aplicaciones basadas en sitios web que requieren acceso al sistema de archivos local.

Acceso bloqueado a la propiedad ActiveCommand en objetos Recordset

Cuando se ejecuta en Internet Explorer, ADO 2.8 ahora bloquea el acceso a la propiedad ActiveCommand de un objeto Recordset activo y devuelve un error. El error se produce independientemente de si la página procede de un sitio web registrado en la lista Sitios de confianza.

Cambios en el control de proveedores OLE DB y seguridad integrada

Al revisar ADO 2.7 y versiones anteriores para detectar posibles preocupaciones y problemas de seguridad, se detectó el siguiente escenario:

En algunos casos, los proveedores OLE DB que admiten la propiedad DBPROP_AUTH_INTEGRATED de seguridad integrada podrían permitir que las páginas web con scripts vuelvan a usar el objeto Connection de ADO para conectarse involuntariamente a otros servidores mediante las credenciales de inicio de sesión actuales de los usuarios. Para evitar esto, ADO 2.8 y versiones posteriores controlan a los proveedores OLE DB en función de cómo hayan elegido proporcionarlos, o no, para la seguridad integrada.

En el caso de las páginas web que se cargan desde sitios enumerados en la lista de zonas Sitios de confianza, en la tabla siguiente se proporciona un desglose de cómo ADO 2.8 y versiones posteriores administran las conexiones de ADO en cada caso.

Configuración de IE para la autenticación y el inicio de sesión del usuario El proveedor admite "Seguridad integrada", y se especifican UID y PWD (SQLOLEDB) El proveedor no admite "Seguridad integrada" (JOLT, MSDASQL, MSPersist) El proveedor admite "Seguridad integrada", y se establece en SSPI (no se especifica ningún UID/PWD)
Inicio de sesión automático con el nombre de usuario y la contraseña actuales Permitir conexión Permitir conexión Permitir conexión
Solicitar el nombre de usuario y la contraseña Permitir conexión Error de conexión Error de conexión
Inicio de sesión automático solo en la zona de intranet Permitir conexión Aviso al usuario con advertencia de seguridad Aviso al usuario con advertencia de seguridad
Inicio de sesión anónimo Permitir conexión Error de conexión Error de conexión

En caso de que aparezca una advertencia de seguridad, el cuadro de mensaje informa a los usuarios:

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

El mensaje anterior permite al usuario tomar una decisión más informada y proceder en consecuencia.

Nota

Para sitios que no son de confianza (es decir, los sitios que no aparecen en la lista de zonas Sitios de confianza), si el proveedor tampoco es de confianza (como se explicó anteriormente en esta sección), el usuario podría ver dos advertencias de seguridad en una fila, una advertencia sobre el proveedor no seguro y una segunda advertencia sobre el intento de usar su identidad. Si el usuario hace clic en Aceptar en la primera advertencia, se ejecutan la configuración de Internet Explorer y el código de comportamiento de respuesta descritos en la tabla anterior.

Controlar si se devuelve texto de contraseña en las cadenas de conexión de ADO

Al intentar obtener el valor de la propiedad ConnectionString en un objeto Connection de ADO, se producen los siguientes eventos:

  1. Si la conexión está abierta, se realiza una llamada de inicialización al proveedor OLE DB subyacente para obtener la cadena de conexión.

  2. En función de la configuración del proveedor OLE DB de la propiedad DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, las contraseñas se incluyen junto con otra información de la cadena de conexión que se devuelve.

Por ejemplo, si la información de seguridad persistente de la propiedad dinámica Connection de ADO está establecida en True, la información de contraseña se incluye en la cadena de conexión devuelta. De lo contrario, si el proveedor subyacente ha establecido la propiedad en False (por ejemplo, con el proveedor SQLOLEDB), la información de contraseña se omite en la cadena de conexión devuelta.

Si usa proveedores OLE DB externos (es decir, que no son de Microsoft) con el código de aplicación de ADO, puede comprobar cómo se implementa la propiedad DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO para determinar si se permite incluir información de contraseña con cadenas de conexión de ADO.

Comprobación de dispositivos que no funcionan con archivos al cargar y guardar conjuntos de registros o secuencias

En el caso de ADO 2.7 y versiones anteriores, las operaciones de entrada y salida de archivos, como Abrir y Guardar que se usaron para leer y escribir datos basados en archivos, podrían permitir en algunos casos usar una dirección URL o un nombre de archivo que especificaba un tipo de archivo no basado en disco. Por ejemplo, LPT1, COM2, PRN.TXT y AUX podrían usarse como alias para la entrada y salida entre impresoras y dispositivos auxiliares en el sistema mediante determinados

Para ADO 2.8 y versiones posteriores, esta funcionalidad se ha actualizado. Para abrir y guardar objetos Recordset y Stream, ADO ahora realiza una comprobación de tipos de archivo para asegurarse de que el dispositivo de entrada o salida especificado en una dirección URL o un nombre de archivo es un archivo real.

Nota

La comprobación de tipos de archivo como se describe en esta sección solo se aplica a Windows 2000 y versiones posteriores. No se aplica a situaciones en las que ADO 2.8 o versiones posteriores se ejecutan en versiones anteriores de Windows, como Windows 98.