Mantener las contraseñas fuera del código fuente

5

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?

    
pregunta Naya Bonbo 21.10.2015 - 23:10
fuente

2 respuestas

4

Puedo pensar en un par de opciones que pueden ayudar.

1) Mantenga el archivo de configuración en los servidores activos y haga que el proceso de compilación lo copie en la nueva carpeta de implementación. Siempre que restrinja el acceso al Live Box, se alejará de todos los que tengan acceso.

2) Cifre las contraseñas y tenga las claves de descifrado en el servidor. cualquier persona sin acceso a la caja no puede descifrar el archivo.

3) Use RSA, asigne al servidor una clave privada y almacene la clave pública en la base de datos de la aplicación. La clave pública encripta el archivo de contraseña, la aplicación toma la clave privada del servidor y la usa para el descifrado. De esta manera, cualquier persona puede tener el archivo de configuración y cualquier persona con acceso a la base de datos puede crear uno. Solo las personas con acceso al almacén de certificados en el servidor pueden acceder a la clave de descifrado. Puedes agregar la firma si quieres.

Puede guardar copias de las claves / contraseñas en algún lugar con acceso restringido en caso de que necesite recuperarlas.

    
respondido por el Jay 22.10.2015 - 09:20
fuente
2

Si necesita ocultarlos, puede moverlos a un archivo separado (un archivo de configuración o algo) que puede agregar .gitignore o equivalente. Puede proporcionar un segundo archivo de muestra no oculto que le mostrará al usuario cómo ingresar sus propias contraseñas o claves.

    
respondido por el WayToDoor 21.10.2015 - 23:40
fuente

Lea otras preguntas en las etiquetas