¿Es una mala práctica usar Integrated Security=True
en un servidor de producción en ASP.NET?¿Debo usar 'Integrated Security = True' en un entorno de producción?
Respuesta
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.
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. –
@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
@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. –
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 :-)
Acrobacias? Está integrado en soporte para cadenas de conexión SQL cifradas. No es especialmente difícil. – Brian
@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
@ 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
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.
- 1. Usar DropCreateDatabaseIfModelChanges en un entorno de producción
- 2. NAnt o MSBuild, ¿cuál debo usar en un entorno svn?
- 3. Uso de CoffeeScript en un entorno de producción
- 4. ¿Debo usar Security Manager en aplicaciones web Java?
- 5. ¿Debo usar Anti-XSS Security Runtime Engine en ASP.NET MVC?
- 6. ¿Cómo debo usar maxlength en CFQUERYPARAM list = "true"?
- 7. ¿debo usar while (true) para recibir datos de Socket?
- 8. django-apio en el entorno de producción de varios servidores
- 9. Asegurar contraseñas en el entorno de producción
- 10. Entorno de desarrollo y producción en PHP
- 11. Qué registrar/rastrear en un entorno de producción
- 12. ¿Alguien que usa RavenDB en un entorno de producción?
- 13. Cómo eliminar archivos temporales ASP.net en un entorno de producción?
- 14. ¿Cuál es la diferencia entre Trusted_Connection y Integrated Security en una cadena de conexión?
- 15. ¿Can PipeLine Mode y Pool Identity afectan a una aplicación que se ejecuta con Integrated Security?
- 16. ¿Debo usar Mono en un proyecto real?
- 17. ¿Debo implementar Glimpse en el sitio de producción?
- 18. Cómo configurar un programa de correo en la aplicación Rails para entorno de producción en Heroku
- 19. Uso de Web.config diferente en entorno de desarrollo y producción
- 20. Error en el entorno de "producción" en Symfony2
- 21. Application-Integrated "Send Feedback"
- 22. ¿Cómo debo mover mi código de dev a producción?
- 23. cómo cargar minify css en entorno de producción
- 24. ¿Cómo usar Mahout en un entorno Windows?
- 25. ¿Cómo iniciar al pasajero en el entorno de producción?
- 26. Rails 3 http_basic_authenticate_with solo en el entorno de producción?
- 27. ¿Debo usar el JSAPI de Google en el código de producción?
- 28. ¿Cómo debería verse mi archivo composer.json en el entorno de producción?
- 29. ¿Debo configurar IsReusable en True en mis HttpHandlers?
- 30. Symfony2: determinar si un controlador se llama desde un entorno de desarrollo o desde un entorno de producción
¿Esto es para una cadena de conexión en el archivo de configuración? – slugster
sí para el archivo de configuración – user441365