¿Es seguro almacenar la contraseña de la base de datos en un archivo PHP?

25

Mi archivo connection.php almacena las credenciales para conectarse a la base de datos:

<?php 
    $objConnect = mysql_connect("localhost","username","password"); 
    mysql_select_db("selectDB", $objConnect);
?>

Cuando una página necesita conectarse a la base de datos, solo uso <?php include("connection.php"); ?> .

¿Esto es seguro? ¿Pueden los piratas informáticos robar mis credenciales de ese archivo?

    
pregunta OammieR 01.04.2012 - 17:52
fuente

3 respuestas

32

Mi recomendación: No almacene contraseñas en el código fuente.

En su lugar, guárdelos en un archivo de configuración (fuera de la raíz web) y asegúrese de que el archivo de configuración no sea de acceso público. El motivo es que normalmente no desea mantener sus contraseñas en el repositorio de código fuente o expuestas a todos los que pueden ver los archivos en su raíz web.

Existe un riesgo adicional con el almacenamiento de contraseñas en un archivo .php dentro de su webroot, que es un poco oscuro pero se puede evitar fácilmente colocando el archivo fuera de su raíz web. Considere: si está editando connection.php usando un editor de texto, y su conexión se cae mientras lo está editando, su editor guardará automáticamente una copia del archivo connection.php en algún archivo de copia de seguridad: por ejemplo, connection.php~ (en el mismo directorio). Ahora el archivo de copia de seguridad tiene una extensión diferente, por lo que si alguien intenta recuperar ese archivo, el servidor Apache estará encantado de entregar una copia del archivo en texto sin formato, revelando la contraseña de la base de datos. Consulte el 1% de los sitios que utilizan CMS expone sus contraseñas de la base de datos para obtener más información.

Vea también ¿Cómo los proyectos de código abierto manejan artefactos seguros? , ¿Open Source y cómo funciona para proyectos seguros?

    
respondido por el D.W. 02.04.2012 - 03:27
fuente
11

Es razonablemente seguro. Para obtener el contenido del archivo php, un pirata informático debe comprometer su servidor o usted debe configurarlo incorrectamente.

Todavía recomiendo configurar mysql para que el usuario utilizado por el script no sea accesible de forma remota, y use un usuario diferente para el acceso remoto administrativo.

    
respondido por el CodesInChaos 01.04.2012 - 18:02
fuente
5

El problema surge si tiene un script PHP que posiblemente descarga los archivos en su servidor, por ejemplo, download.php?=index.php .

Si marca Google, verá que esta vulnerabilidad existe en muchos otros sitios.

    
respondido por el Victor Casé 01.04.2012 - 20:59
fuente

Lea otras preguntas en las etiquetas