ODBC que contenga la contraseña


22 de Marzo del 2021

Buenos días.

Desde una página asp tengo que acceder a una tabla SQL.

He encontrado dos formas:
- Con la cadena de conexión al SQL, poniendo usuario y contraseña
- Con el DSN del ODBC, poniendo usuario y contraseña

En las dos tengo que poner usuario y contraseña, cosa que no puedo hacer, ya que expongo estos dos datos a un ataque externo.

Hay alguna manera de crear un ODBC que ya contenga el usuario y contraseña para sólo llamarlo y no tener que ponerlos en la página asp?

O alguna otra opción que se le ocurra a alguien.

Gracias.


David Carrero
12 de Agosto del 2026

Hola,

Si tu aplicación ASP y el servidor SQL están en el mismo dominio de Windows (o puedes ponerlos), la solución más limpia es no usar usuario/contraseña de SQL en absoluto: usa autenticación integrada de Windows (Trusted Connection). La cadena de conexión queda así, sin ningún usuario ni contraseña expuesta:

Provider=SQLOLEDB;Data Source=TU_SERVIDOR;Initial Catalog=TU_BASE;Integrated Security=SSPI;

Aquí el pool de aplicaciones de IIS se ejecuta con una cuenta de Windows concreta, y le das permisos a esa cuenta directamente en SQL Server. No hay credenciales que guardar en ningún sitio, ni en el código ni en un fichero de configuración.

Si por lo que sea no puedes usar autenticación integrada (servidores en dominios distintos, hosting compartido, etc.), la segunda mejor opción es cifrar la sección de conexión del web.config en vez de guardar el usuario y contraseña en texto plano:

aspnet_regiis -pef "connectionStrings" "C:rutadetuweb"

Esto cifra esa sección del fichero usando el almacén de claves protegido de la propia máquina Windows (DPAPI). El fichero web.config en disco queda con el bloque cifrado, y solo esa máquina concreta puede descifrarlo, así que aunque alguien consiga leer el fichero (por ejemplo, por un fallo de configuración que sirva .config como texto plano), no ve las credenciales.

El DSN de ODBC guardando usuario/contraseña que mencionas existe, pero en la práctica no añade seguridad real frente a cifrar el web.config: sigue habiendo credenciales guardadas en algún sitio del sistema, solo cambias dónde.

David Carrero