¿Qué tan peligroso es almacenar la contraseña en texto sin formato en sitios como GitHub?

11

Tengo algunos repositorios privados configurados en GitHub para algunos de los proyectos en los que estoy trabajando para mi empresa. Estas aplicaciones se conectan a las bases de datos y tengo credenciales de autenticación de base de datos almacenadas en un archivo llamado config.php (en texto sin formato).

¿Qué tan arriesgado es esto, dado que mi código está en los servidores de GitHub? Sé que, desde mi punto de vista, solo las personas a las que les concedo acceso para el repositorio podrán ver esta información, pero ¿debo preocuparme por otras fuentes de fugas?     

pregunta karancan 03.07.2013 - 20:13
fuente

4 respuestas

8

Esta es una pregunta interesante con varias facetas que se deben desglosar.

La primera pregunta que hiciste es "¿Qué tan arriesgado es esto?" y la respuesta es "muy". Al exponer esas credenciales en un servicio de terceros que usted no controla ni administra, aumenta el riesgo. Hay muchas formas en que sus credenciales podrían verse expuestas: compromiso de servicio, cuentas de servicio comprometidas, falla de autorización en el servicio, escuchas ilegales de la red (si no se utiliza SSL / TLS para servir el código), otorgando acceso a la persona incorrecta, etc.

Básicamente, considera las credenciales expuestas.

Suena terrible, ¿verdad? Tal vez no ... Ahora tienes que hacer la pregunta "¿Me siento cómodo con ese riesgo?" Si tiene otras mitigaciones en su lugar, entonces podría estar de acuerdo con ello. Si limita (quizás con la inclusión en la lista blanca de IP) desde donde se pueden usar esas credenciales, entonces las credenciales serán menos útiles para robar. El servicio también podría tener un valor extremadamente bajo y no tiene sentido financiero agregar seguridad adicional. Si el costo de recuperarse de un compromiso es de $ 10 y agregar seguridad adicional costaría $ 1,000,000, entonces usted vive con el riesgo. (Dicho esto, si ha comprometido a sus usuarios a protegerlos a ellos o a su información, tiene la obligación ética de tratar de cumplir ese compromiso, independientemente del costo).

Algunos pensamientos adicionales:

"proyectos en los que estoy trabajando para mi empresa": lo está haciendo en nombre de la empresa en la que trabaja, es probable que tengan políticas o prácticas aceptables. Si ese es el caso, deberían tener prioridad sobre lo que te sientas cómodo. El riesgo que está creando afecta a su empresa y su reputación, la empresa puede hacer la llamada final.

Lucas Kauffman sugiere un buen enfoque. No puedo decir si funcionará para usted, pero lo mejor es encontrar una mitigación que funcione para su proceso de implementación y que reduzca el riesgo a un nivel cómodo.

    
respondido por el u2702 05.07.2013 - 18:24
fuente
7

Lo hago tan bien como trabajo en un proyecto almacenado en Github desde diferentes ubicaciones. Sin embargo, en el momento en que mi código entra en aceptación o producción, la contraseña se cambia a algo aleatorio. Por lo tanto, para las pruebas / desarrollo, no me importa que las credenciales de mi base de datos estén ahí, ya que solo son válidas en mis máquinas de desarrollo y no hay datos confidenciales.

    
respondido por el Lucas Kauffman 03.07.2013 - 20:36
fuente
2

Independientemente de que su nivel (¿relajado?) de necesidades de seguridad haga que sea correcto almacenar las contraseñas en el repositorio, no hay absolutamente ninguna necesidad de hacerlo.

Acabo de encontrar el mismo problema con las contraseñas de base de datos utilizadas de los scripts php, y mi respuesta fue escribir un simple script php para generar automáticamente contraseñas al azar. La idea es ejecutar el generador de contraseñas una vez, justo después de descargar la fuente, para generar contraseñas locales. Estos nunca deben ser empujados al repositorio; cuando el código se descarga en otro lugar (por un colaborador o en el servidor de producción), nuevamente el generador debe ejecutarse una vez localmente para obtener un conjunto diferente de contraseñas.

Si no puede ser molestado en implementarlo usted mismo, solo use mi código (que actualmente asume que la base de datos y el intérprete de php se ejecutan en el mismo servidor): enlace

    
respondido por el pyramids 04.07.2013 - 11:54
fuente
0

Guardar su contraseña en cualquier lugar en texto sin formato siempre es riesgoso. Ahora no estoy seguro de si esto es posible en php, pero estoy seguro de que en .NET es posible cifrar los archivos de configuración.

    
respondido por el Four_0h_Three 03.07.2013 - 20:26
fuente

Lea otras preguntas en las etiquetas