Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wo können MySQL-Anmeldeinformationen in PHP-Skripten gespeichert werden?

Ihr Webstammverzeichnis, das ist $_SERVER['DOCUMENT_ROOT'] in PHP ist der Ordner in Ihrem Dateisystem, auf den Ihr Webserver (in diesem Fall Apache) für einen bestimmten Host verweist.

Wenn Sie beispielsweise diesen Code in Ihre index.php-Datei einfügen und Ihren Domainnamen (oder Subdomainnamen) besuchen, wird Ihnen Ihr Webstamm mitgeteilt.

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

Es sollte so etwas wie /home/some_user/public_html lauten oder /var/www . In diesem Fall möchten Sie einen Pfad erstellen, der sich nicht in diesem Verzeichnis befindet.

Zum Beispiel:/home/some_user/config oder /var/webconfig .

Das tun Sie NICHT Sie möchten es in /home/some_user/public_html/config speichern (beachten Sie public_html) oder /var/www/webconfig (Beachten Sie, dass dies ein Unterordner von /var/www ist )

Die Idee, Daten außerhalb Ihres Webstamms zu speichern, besteht darin, dass ein Angreifer nicht zu http://yoursite.com/config/mysql.txt navigieren kann und erhalten Sie Ihre Passwörter. LFI- und Directory-Traversal-Angriffe fallen nicht in den Anwendungsbereich dieser Initiative.

Sie sollten auch keine vertraulichen Informationen (Datenbankanmeldeinformationen, Verschlüsselungsschlüssel usw.) in die Versionskontrolle einchecken. Immer.

Wie greife ich von PHP darauf zu?

Das hängt davon ab, wie Ihre Konfiguration codiert ist.

<?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';
?>