it-swarm-es.com

¿Cuál es la forma correcta de almacenar cadenas de conexión de base de datos desde el punto de vista de la seguridad?

¿Cuáles son las recomendaciones, las mejores prácticas y las tareas pendientes con respecto al manejo de cadenas de conexión en aplicaciones web? ¿Qué cosas nunca se deben hacer?

12
rem

La mejor opción: no use una contraseña para la base de datos, sino emplee la autenticación integrada (Windows) si es posible y, por supuesto, aísle la identidad de la aplicación autorizada para la base de datos. De esta forma, el sistema operativo/servidor web/SCM gestiona su identidad de manera muy segura.

Si no es posible seguir el camino de I ntegrated W indows A autenticación (IWA), necesitará cifrar de forma segura la conexión, preferiblemente usando algo como DPAPI (para que no tenga que administrar la clave de cifrado), y almacenar el valor cifrado en una clave de Registro protegida con ACL fuertes.
Si está en ASP.NET (a partir de sus comentarios, pero no de OP), existen herramientas integradas para hacerlo automáticamente (aspnet_setreg, aspnet_regiis, etc., dependiendo de la versión ...)

6
AviD

cosas que nunca deberías hacer

  • poniendo una cadena de conexión en un archivo de texto.
  • tener un archivo de configuración en una carpeta/directorio accesible al público.

cosas que deberías hacer.

  • crea una función auxiliar que genera la contraseña de la base de datos al vuelo.
  • cambia con frecuencia la contraseña y el nombre de usuario de la base de datos.
  • compruebe si su servidor está configurado correctamente, que no está sirviendo archivos ejecutables como texto sin formato.
2
Mohamed

Recomiendo almacenar su cadena de conexión fuera del directorio raíz del sitio web.

Si está utilizando ASP.NET, su archivo web.config estará en el directorio raíz del sitio web, pero puede cifrar una sección de su archivo web.config utilizando la API de protección de datos, que almacena La clave de descifrado de forma segura.

¿Qué marco está utilizando para su aplicación web?

2
KirkJ

Como opción, intente usar rol de aplicación para acceder al servidor sql

Beneficios:

  • Los administradores de red regulares pueden administrar el acceso a los datos sin necesidad de consultar al administrador de la base de datos (DBA), simplemente controlando quién tiene acceso a una aplicación.
  • No necesita preocuparse por realizar un seguimiento de los cambios de usuarios con el propio SQL Server. Configure una función de aplicación y puede delegarla nuevamente al nivel de red.
  • Puede limitar la disponibilidad de datos a una sola aplicación. Por ejemplo, un usuario puede modificar la información contable solo cuando usa la aplicación de contabilidad general, y no cuando se conecta directamente a SQL Server.
2
garik