¿Es seguro centralizar la información de la base de datos?

4

Yo sabría si es seguro centralizar la información de la base de datos en un archivo como este:

db_infos.php :

$server = "localhost";
$user = "root";
$password = "1234";
$database = "foo";
$table = "bar";

Y luego, incluya este archivo cuando necesite:

include("db_infos.php');
mysql_connect($server, $user, $password);
...

¿Hay alguna forma de obtener la información de la base de datos, de lo contrario hay otras formas más seguras o más relevantes (se aceptan ambas; p)?

Si no está seguro, dime por qué y cómo lo hará :)

    
pregunta torr 05.06.2012 - 07:04
fuente

3 respuestas

6

Yo diría que es tan seguro como el directorio en el que está ubicado.

El lugar ideal para almacenar el archivo de conexión de la base de datos sería fuera de la raíz web. De esta manera, un atacante no podría obtener acceso al archivo mediante ataques transversales de directorio.

Más información sobre el recorrido del directorio: enlace

Esta página también tiene más información sobre el tema: enlace

    
respondido por el Ayrx 05.06.2012 - 07:06
fuente
2

En primer lugar, vive según la regla de privilegios mínimos. A menos que explícitamente necesite escribir en la base de datos en una página determinada, use un usuario de solo lectura.

En general, trato de no codificar nunca las credenciales en el código fuente. Siempre parecía estar mal (incluso en un lenguaje del lado del servidor). Más bien, los puse en un archivo de configuración de solo lectura restringido que está fuera del directorio raíz. Creo que puede almacenar los detalles de la conexión dentro de su httpd.conf o archivo de hosts virtuales (si su host le otorga acceso a él), de esta manera puede llamar a mysql_connect sin ningún parámetro, que se leerá de forma predeterminada en la configuración.

Por último, configure su servidor para que solo acepte conexiones del servidor y del usuario local y bloquee todo lo demás. No mostrar las credenciales en las salidas de error. Mejor aún, desactive todos los errores y pruebe los cambios localmente antes de hacerlos funcionar. MySQL tiene una tendencia a escupir información valiosa

    
respondido por el Fairlight 05.06.2012 - 08:42
fuente
1

Sí, está bien centralizar la información de conexión y las credenciales de la base de datos en un único archivo de configuración .

Sin embargo, no almacene ese archivo en su raíz web . Asegúrese de almacenarlo en otro lugar fuera de la raíz web. Hay dos razones para esto. Primero, si no tiene cuidado, alguien podría acceder a ese archivo a través de su navegador y luego aprenderá todo lo necesario para conectarse a su base de datos. En segundo lugar, si no tiene cuidado, su editor puede guardar copias de seguridad del archivo, lo que nuevamente lo expondrá al mundo (consulte aquí para más detalles).

Además, no inserte este archivo en el sistema de control de versión de código fuente . No desea que sus contraseñas y claves de cifrado queden expuestas en ese sistema de control de versiones, con copias guardadas para siempre y respaldadas de forma persistente.

Para obtener más información, consulte las siguientes preguntas en este sitio: ¿Es una forma segura de declarar parámetros de base de datos en htaccess en lugar de en un archivo PHP? , dónde almacenar una clave para el cifrado , ¿Debe un sitio web de código cerrado mantener una clave secreta en su fuente? , y ¿Cómo manejan los artefactos de código abierto los artefactos seguros? .

    
respondido por el D.W. 07.06.2012 - 20:55
fuente

Lea otras preguntas en las etiquetas