Handbuch:Datenbankpasswörter sichern
LocalSettings.php enthält standardmäßig MySQL-Datenbankbenutzer-IDs und Passwörter. Das Aufbewahren dieser Anmeldeinformationen in LocalSettings.php ist riskant, weil in seltenen Fällen PHP-Dateien als Klartext bereitgestellt werden, der diese Anmeldeinformationen der Welt offenbart:
- PHP ist auf dem Server deaktiviert
- PHP selbst geht kaputt
- Du hast CGI search.pl (Ein häufig zu findener CGI-Suchskript) irgendwo in der Domain. Beschreibung des Exploits.
Falls du in diesen seltenen Fällen dein MySQL-Benutzername und Passwort geheim halten möchtest, sollten sie nicht teil der LocalSettings.php-Datei sein.
MySQL-Passwörter außerhalb von Webroot
Du solltest nie deine MySQL-Passwörter in einer Textdatei, welches im Webroot ist, speichern. Du kannst dies vermeiden, indem du folgendes machst:
- Erstelle einen Ordner außerhalb deines Webroots. Zum Beispiel, wenn deine Website sich in "
/htdocs/www-wiki
" befindet, dann erstelle einen Ordner namens "external_includes" außerhalb deines Webroots:mkdir /external_includes
- Erstelle eine Datei in den Ordner, den du gerade gemacht hast, namens etwas wie "mysql_pw.php" und platziere eine Variabel auf einer separaten Zeile für dein MySQL-Benutzername, Passwort, Hostname und Datenbankname, wobei jede Variable auf die tatsächlichen Werte gesetzt wird. Zum Beispiel mit nano als dein Editor:
nano /external_includes/mysql_pw.php
- Gebe die folgenden Zeilen ein, wobei du natürlich die realen Werte anstelle der eingeklammerten "mysql_"-Füller verwendest:
<?php
$wgDBserver = "[mysql_host]";
$wgDBname = "[mysql_db_name]";
$wgDBuser = "[mysql_user]";
$wgDBpassword = "[mysql_password]";
// more confidential data...
?>
- Sorge dafür, dass keine Leerzeichen (leeren Zeilen) nach den Text bleiben.
- Speichere und schließe die Datei. In w:de:Nano (Texteditor) ist es: Ctr+O (Speichern) und Ctr+X (Schließen)
Check with your distro for the webserver's user. This varies, and examples include "apache", "www-data", "nobody", "httpd". Lege dann die Berechtigungen für die Passwortdatei wie gefolgt fest:
chgrp apache mysql_pw.php
(entfernt Zugangsrechte von anderen und Schreibrechte vom Webserver)chmod 640 mysql_pw.php
- (probably repeat with g-rxw ... for LocalSettings.php )
- Make sure that the file owner has
r
(or
)chmod 400 LocalSettings.php
- Bearbeite deine LocalSettings.php-Datei und füge die folgende Zeile am Anfang der Datei ein:
require_once "/external_includes/mysql_pw.php"; //require_once "[FULL ABSOLUTE PATH TO mysql_pw.php]";
- Entferne nun diese Variablen von LocalSettings.php:
$wgDBserver $wgDBname $wgDBuser $wgDBpassword
This way if somebody is able to access and display LocalSettings.php, all they will see is some settings rather than the password, username, etc. to your MySQL database and the real file containing that information is off limits to the web server. You still need to make sure LocalSettings.php is only readonly to the apache user as described above.
drwx--x--x
(711). For the file "mysql_pw.php" you will have to set rw-r--r--
(644), otherwise your wiki will not run. Still, your password is secure because the file with critical info is out of web access.See also
- The setting $wgSMTP for sending emails contains user name and password. It can be secured in the same way