2010-10-18 17 views

Respuesta

8

Nop - perfectamente seguro *

Todo lo que está haciendo es decir que se va a utilizar las credenciales de (por lo general) el usuario de Windows que el proceso se ejecuta con el fin de autenticar con SQL Server (en contraposición para proporcionar un nombre de usuario y contraseña).

De hecho, en general, el uso de seguridad integrada se considera más seguro.

(*) Por supuesto, siempre depende de su situación exacta, pero en el caso general sí está bien.

+1

Hmm, ¿ha considerado que esto podría no ser necesariamente cierto para un servidor web? Si está comprometido, la tienda dbase también está abierta. Mantener una contraseña segura en un servidor no es tan difícil, hay un bloqueo en la puerta de la sala del servidor. –

+2

@Hans a menos que esté bromeando, ese es un argumento pobre. Si el servidor se ve comprometido, el atacante también tendría acceso a la conexión basada en sql u/p, por lo que no es mejor que integrarlo. En ambos casos, la facilidad con la que el atacante puede llegar desde esa posición para acceder a la base de datos y cuánto pueden hacer dependerá de la configuración específica. Si realmente quiere protegerse contra ese escenario, no tendría el servidor web golpeando el DB directamente. – eglasius

+0

@eglasius - no, no usé una carita sonriente. Usted trabaja desde la suposición de que el atacante usaría una conexión existente. Eso lo hace de la manera * difícil * si la seguridad integrada está activada. Él podría simplemente crear su propia conexión, sin necesidad de proporcionar un nombre de usuario o contraseña difícil de adivinar. –

1

Esto puede ser algo bueno o malo dependiendo de la cuenta que IIS esté utilizando para ejecutar la aplicación web.

En cualquier caso, existe una clara ventaja de que la identificación de usuario y la contraseña de SQL no aparecen en la cadena de conexión; siempre es algo bueno

Sin embargo, debe configurar cuidadosamente su entorno de producción. Sugeriría que cree una cuenta de usuario distinta para que IIS use para ejecutar la aplicación web. Esa cuenta de usuario podría configurarse para tener acceso solo a los recursos SQL requeridos por su aplicación. Eso lo protegería de tener otras aplicaciones fácilmente comprometidas en caso de que la seguridad de su aplicación web se vea comprometida.

He oído hablar de los programadores haciendo acrobacias donde se carga una cadena de conexión SQL con el ID de usuario y la contraseña en tiempo de ejecución de un recurso cifrada :-)

+1

Acrobacias? Está integrado en soporte para cadenas de conexión SQL cifradas. No es especialmente difícil. – Brian

+1

@Brian: es mucho mejor bloquear los permisos de la cuenta de SQL que encriptar solo la cadena de conexión. Prefiero usar procedimientos almacenados para el 100% de acceso SQL y solo permitir el permiso de ejecución para el usuario. De esa forma, incluso si un atacante tiene la contraseña, puede hacer poco más de lo que la aplicación puede hacer por sí misma. Sin embargo, usar los permisos de SQL y una cadena de conexión encriptada sería la mejor opción. – NightOwl888

+0

@ NightOwl888 - Acepto que tomar múltiples precauciones es una buena práctica. [Cómo: cadenas seguras de conexión cuando se utilizan controles de fuente de datos] (https://msdn.microsoft.com/en-us/library/ms178372.aspx) – myidealab

1

respuesta a la pregunta del título:
Usted debe ¡no toque (use menos) nada en el entorno de producción mientras tiene tales preguntas o dudas!

respuesta a la pregunta del cuerpo:
de SQL Server en la producción no debe habilitarse para la autenticación de SQL Server en absoluto

Actualización:
Estoy sorprendido de ver que todas las respuestas utilizan probabilística "esto depende", "en algunos casos "," más "posibilidades.

Cuestiones relacionadas