Los secretos no deben estar en el código fuente y en el control de versiones debido a dos razones:
Amenaza externa : un atacante puede aprovechar una vulnerabilidad para obtener acceso a los archivos / fuentes de su sitio web / aplicación. Por ejemplo, explotando el cruce de directorios o la vulnerabilidad de descarga de archivos arbitrarios. Tal ataque no debería llevar a la filtración de secretos.
Amenaza interna : un desarrollador está copiando / distribuyendo maliciosamente el código fuente. Comprensiblemente, debe haber un pequeño subconjunto de personas que necesiten conocer estos secretos; lo que intentamos evitar aquí es que todos los desarrolladores de la organización que tienen acceso al sistema de control de versiones puedan ver los secretos.
Las variables de entorno es una solución habitual. Sin embargo, si los scripts de construcción también están versionados, simplemente estamos cambiando la ubicación de los secretos del código fuente al script hudson / jenkins / capistrano respectivo.
¿Cuáles son las mejores prácticas para mantener las contraseñas fuera del código fuente?