2009-03-06 19 views
16

¿Cuál es la mejor forma de administrar cadenas de conexión en una aplicación web, desde el punto de vista de la seguridad? Lo he hecho de diferentes maneras. Los he almacenado como texto sin formato web.config configurando claves. También creé una clase "Constantes" que tiene propiedades públicas de cadena de solo lectura para cada cadena de conexión.Mejores prácticas de cadena de conexión

¿Alguien tiene alguna recomendación para administrar las cadenas de conexiones de forma que no me preocupe que se descubran maliciosamente? Definitivamente estoy abierto para el cifrado.

Respuesta

3

puede encrypt your connection strings en su archivo web.config.

almacenar cadenas de conexión en una clase como una propiedad o una constante no es seguro. cualquiera que use un desensamblador puede ver su cadena de conexión.

La mejor manera es la configuración de cifrado.

+0

También es posible que desee utilizar SecureString en lugar de una cadena normal, por lo que un volcado de memoria no lo expondrá tampoco ... si es así inclinado. – Stimul8d

2

Puede cifrar y descifrar las secciones de su web.config mediante el uso de la herramienta de línea de comandos aspnet_regiis:

Cifrar: aspnet_regiis -pef "connectionStrings", "c: \ carpeta \"

Descifrar: aspnet_regiis -pdf "connectionStrings", "c: \ carpeta \"

1

@vartec: no es absolutamente un SNAFU ..

IIS hecho puede leer el texto cifrado si cifra usando .N norma Mecanismo de cifrado ET que no romperá ninguna codificación UTF8 o Unicode. Microsoft también está alentando esto como una mejor práctica.

Se puede ver una muestra sobre la codificación de cadena de conexión de esta:

"Cómo: Cadenas de conexión segura cuando utiliza origen de datos Controla"

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

2

Si usted tiene el control total sobre el servidor también puede almacenar la cadena de conexión en su Machine.Config. Esto puede ser útil si tiene muchas aplicaciones que funcionan con el mismo servidor de base de datos.

No estoy seguro si vale la pena encriptarlo ya que primero tiene que acceder al servidor para ver el archivo machine.config. Y si su servidor se ha visto comprometido, el Encyrption no impedirá que un pirata informático extraiga las credenciales del archivo de configuración.

+0

Protege contra la exposición accidental de los contenidos de web.config, siempre que un atacante no pueda cargar su propio archivo .aspx en el directorio de la aplicación. – finnw

+0

Una advertencia similar se aplica a las contraseñas de usuario hash: lo protege solo de copias de seguridad de bases de datos filtradas. Ambos son inútiles si un atacante obtiene el control del servidor web, pero vale la pena hacerlo de todos modos. – finnw

+0

Hacemos esto donde trabajo así para nuestros diferentes servidores (dev, test, prod) para que la cadena de conexión apropiada siempre se use para cada uno. Funciona muy bien – spilliton