Schütze deine wp-config.php
Ronald Huereca erklärt in einem Artikel auf Devlounge, wie man dafür sorgt, dass die wp-config.php
der WordPress-Installation nicht für Hacker einfach erreichbar ist um so die Möglichkeit eines Hackerangriffs auf das eigene Blog zu erschweren.
Die wp-config.php
ist der Schlüssel zur Datenbank und damit stehen einem Eindringen in die Datenbank nur wenige Handgriffe bevor und schon liegt die DB offen, Damit kann ein „Bösewicht“ die Daten verändern oder gar alle Daten löschen. Also liegt es nahe, diese Datei vor fremden Zugriff zu schützen. Wie und und mit welchen Mitteln man dies machen kann, das erklärt der Artikel auf zwei unterschiedliche Wegen.
Ich habe die jeweiligen Code-Schnippsel im Anschluss nochmal hinterlegt, da ich die Idee für sinnvoll und machbar, auch für den „Laien“, erachte, so dass man auch mit deutschen Sprachkenntnissen der Idee folgen und umsetzen kann.
.htaccess erweitern
Ronald erklärt zwei unterschiedliche Ansätze. Im ersten Schritt sichert er den Zugriff via .htaccess
, was schnell und einfach erledigt ist.
# protect wpconfig.php <files wp-config.php> Order deny,allow deny from all </files>
Damit könnte eine .htaccess für WordPress folgenden Aufbau und Inhalt haben, wobei ich gleich einige mehr Regeln integriert habe, kleine Erläuterungen dazu im Syntax.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # www2nowww RewriteCond %{HTTP_HOST} ^([^.]+).bueltge.de$ [NC] RewriteRule ^(.*)$ http://bueltge.de/$1 [R=301,L] # Hinzufuegn von Slash RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # Schutz der wp-config.php <files wp-config.php> Order deny,allow deny from all </files> # Datei zum Regeln von IP-Bereichen Order deny,allow Allow from all # Sperre folgende IPs deny from 83.246.96.42 deny from 82.103.133.221 deny from 74.86.15.2
Auslagern der wp-config.php
Die zweite Idee geht davon aus, dass die Datei an einen Ort des Servers verschoben wird, der nicht öffentlich zugänglich ist. Ein Beispiel soll es verdeutlichen: die Datei liegt im Normalfall im absoluten Pfad /home/deinname/public_html/
, dies ändert sich nun, denn die Datei wird eine Ebene tiefer abgelegt /home/deinname/
. Dies ist nicht bei allen Webhostern so, so dass die Möglichkeit nicht bei allen WordPress-Installationen möglich ist.
Die klassische wp-config.php
enthält folgenden Syntax.
<?php // ** MySQL settings ** // define('DB_NAME', 'wpbeta'); // The name of the database define('DB_USER', 'root'); // Your MySQL username define('DB_PASSWORD', ''); // ...and password define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); // You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'wp_'; // Only numbers, letters, and underscores please! // Change this to localize WordPress. A corresponding MO file for the // chosen language must be installed to wp-content/languages. // For example, install de.mo to wp-content/languages and set WPLANG to 'de' // to enable German language support. define ('WPLANG', 'de_DE'); /* That's all, stop editing! Happy blogging. */ define('ABSPATH', dirname(__FILE__).'/'); require_once(ABSPATH.'wp-settings.php'); ?>
Mit diesen Daten erstellt ihr eine neue Datei config.php
.
<?php // ** MySQL settings ** // define('DB_NAME', 'wpbeta'); // The name of the database define('DB_USER', 'root'); // Your MySQL username define('DB_PASSWORD', ''); // ...and password define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value // You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'wp_'; // Only numbers, letters, and underscores please! ?>
Diese Datei wird nun per FTP in das nicht öffentliche Verzeichnis des Servers kopiert, in unserem Beispiel ist das /home/deinname/
Die originale wp-config.php
wird nun verändert. Dabei werden die Datenbank-Verbindungsdaten mit Hilfe der include-Anweisung eingebunden.
<?php include('/home/deinname/config.php'); // Change this to localize WordPress. A corresponding MO file for the // chosen language must be installed to wp-content/languages. // For example, install de.mo to wp-content/languages and set WPLANG to 'de' // to enable German language support. define ('WPLANG', 'de_DE'); /* That's all, stop editing! Happy blogging. */ define('ABSPATH', dirname(__FILE__).'/'); require_once(ABSPATH.'wp-settings.php'); ?>
Damit stehen WordPress die Daten für die Datenbank zur Verfügung und die Datei kann nicht einfach als Text angezeigt werden, denn sie liegt in einem nicht öffentlichen Bereich.
Comments are closed.