sql >> Base de Datos >  >> RDS >> Mysql

¿Dónde almacenar las credenciales de MySQL en scripts PHP?

Su raíz web, que es $_SERVER['DOCUMENT_ROOT'] en PHP, es la carpeta en su sistema de archivos a la que apunta su servidor web (en este caso, Apache) para un host en particular.

Por ejemplo, si coloca este código en su archivo index.php y visita su nombre de dominio (o nombre de subdominio), le indicará su raíz web.

    <?php
    header("Content-Type: text/plain;charset=UTF-8");
    die($_SERVER['DOCUMENT_ROOT']);
    ?>

Debería decir algo como, /home/some_user/public_html o /var/www . En este caso, desea crear una ruta que no esté dentro de este directorio.

Por ejemplo:/home/some_user/config o /var/webconfig .

Usted NO desea almacenarlo en /home/some_user/public_html/config (observe el public_html) o /var/www/webconfig (observe que esta es una subcarpeta de /var/www )

La idea de almacenar datos fuera de su raíz web es que un atacante no pueda navegar a http://yoursite.com/config/mysql.txt y obtener sus contraseñas. LFI y los ataques transversales de directorio no están dentro del alcance de esta iniciativa.

Tampoco debe verificar ninguna información confidencial (credenciales de la base de datos, claves de cifrado, etc.) en el control de versiones. Nunca.

¿Cómo acceder a ellos desde PHP?

Eso depende de cómo esté codificada su configuración.

<?php
$config = parse_ini_file('/home/some_user/config/mysql.ini');
// OR
$config = json_decode('/home/some_user/config/mysql.json');
// OR
require_once '/home/some_user/config/mysql_config.php';
?>