Escenarios de seguridad de aplicaciones en SQL Server (ADO.NET)

No hay una única forma correcta de crear una aplicación cliente segura de SQL Server. Cada aplicación tiene unas necesidades, un entorno de implementación y un grupo de usuarios específicos. Una aplicación que es razonablemente segura en el momento en que se implementa puede volverse menos segura con el tiempo. Es imposible predecir con ninguna seguridad qué amenazas pueden surgir en el futuro.

SQL Server, como producto, ha ido evolucionando a lo largo de muchas versiones para incorporar las últimas características de seguridad que permiten a los desarrolladores crear aplicaciones de base de datos seguras. Sin embargo, la seguridad no debe darse por sentada; es necesario realizar una supervisión y actualizaciones continuas.

Amenazas comunes

Los desarrolladores han de saber cuáles son las amenazas a la seguridad, las herramientas con las que cuentan para enfrentarse a ellas y cómo evitar las vulnerabilidades de seguridad provocadas por los propios usuarios. Se puede pensar en la seguridad como en una cadena, en la que si se rompe un vínculo, se pone en peligro la fortaleza de toda ella. En la siguiente lista se incluyen algunas de las amenazas a la seguridad más comunes, que se comentan en mayor detalle en los temas de este apartado.

Inyección de SQL

La inyección de SQL es el proceso por el cual un usuario malintencionado escribe instrucciones de Transact-SQL en lugar de entradas válidas. Si la entrada se pasa directamente al servidor sin haber sido validada y la aplicación ejecuta el código inyectado por error, el ataque podría dañar o destruir datos. Para frustrar los ataques por inyección de SQL Server, puede utilizar procedimientos almacenados y comandos parametrizados, evitar el SQL dinámico y restringir los permisos de todos los usuarios.

Elevación de privilegios

Los ataques por elevación de privilegios se producen cuando un usuario es capaz de asumir los privilegios de una cuenta de confianza, como un propietario o un administrador. Trabaje siempre en cuentas de usuario con los privilegios mínimos y asigne sólo los permisos necesarios. Evite utilizar cuentas administrativas o de propietario para ejecutar código. De esta forma se limita el daño que se podría sufrir en caso de que un ataque tenga éxito. Cuando realice tareas que requieran permisos adicionales, utilice la firma de procedimientos o la suplantación únicamente mientras dure la tarea. En SQL Server 2005, ya puede firmar procedimientos almacenados con certificados o usar la suplantación para asignar permisos temporalmente.

Sondeos y observación inteligente

Un ataque por sondeo puede utilizar mensajes de error generados por una aplicación para buscar puntos vulnerables en la seguridad. Implemente el control de errores en todo el código de procedimiento para evitar que se devuelva la información de error al usuario final.

Autenticación

Cuando se utilizan inicios de sesión de SQL Server, se pueden producir ataques por inyección a la cadena de conexión si durante la ejecución se genera una cadena de conexión basada en los datos introducidos por el usuario. Si en la cadena de conexión no se comprueba la validez de los pares de palabras clave, un agresor puede insertar caracteres de más y así podría tener acceso a datos confidenciales o a otros recursos del servidor. Utilice la autenticación de Windows siempre que sea posible. Si tiene que utilizar inicios de sesión de SQL Server, use el SqlConnectionStringBuilder para crear y validar cadenas de conexión durante la ejecución.

Contraseñas

Muchos ataques tienen éxito porque un intruso es capaz de obtener o adivinar la contraseña de un usuario con muchos privilegios. Las contraseñas constituyen su primera línea de defensa contra los intrusos, así que establecer contraseñas seguras es esencial para la seguridad del sistema. Con SQL Server 2005, ya puede crear y aplicar directivas de uso de contraseñas para la autenticación en modo mixto.

Asigne siempre una contraseña segura a la cuenta de sa, incluso cuando utilice la autenticación de Windows.

En esta sección

Vea también

Otros recursos

Seguridad en SQL Server (ADO.NET)

Información general sobre seguridad de SQL Server (ADO.NET)

Proteger aplicaciones de ADO.NET