Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Onde armazenar credenciais MySQL em scripts PHP?


Sua raiz da web, que é $_SERVER['DOCUMENT_ROOT'] em PHP, é a pasta em seu sistema de arquivos que seu servidor web (neste caso, Apache) aponta para um determinado host.

Por exemplo, se você colocar esse código em seu arquivo index.php e visitar seu nome de domínio (ou nome de subdomínio), ele informará sua raiz da web.
    <?php
    header("Content-Type: text/plain;charset=UTF-8");
    die($_SERVER['DOCUMENT_ROOT']);
    ?>

Deve dizer algo como, /home/some_user/public_html ou /var/www . Nesse caso, você deseja criar um caminho que não esteja dentro desse diretório.

Por exemplo:/home/some_user/config ou /var/webconfig .

Você NÃO deseja armazená-lo em /home/some_user/public_html/config (observe o public_html) ou /var/www/webconfig (observe que esta é uma subpasta de /var/www )

A ideia de armazenar dados fora de sua raiz da web é que um invasor não pode navegar para http://yoursite.com/config/mysql.txt e obter suas senhas. LFI e ataques de travessia de diretório não estão no escopo desta iniciativa.

Você também não deve verificar informações confidenciais (credenciais de banco de dados, chaves de criptografia etc.) no controle de versão. Sempre.

Como acessá-los a partir do PHP?


Isso depende de como sua configuração é codificada.
<?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';
?>