PehBehBeh

Erfahrungen eines Hobby-Webentwicklers

WordPress: Auslagern der wp-config.php

| 3 Kommentare

Durch Server-Versagen oder Hintertürchen in diversen Skripten kann es immer wieder vorkommen, dass PHP-Dateien des Servers in Klartext lesbar sind. Der Albtraum für jeden Webmaster, der Konfigurations-Dateien im öffentlichen Verzeichnis hat. Da dies bei nahezu jeder WordPress-Installation der Fall ist, möchte ich hier einen einfachen aber effektiven Weg zeigen, die wp-config.php zu schützen.


Die Auslagerung

Man kann die Auslagerung in folgenden vier Schritten zusammenfassen:

  1. Ausschneiden der sicherheitsrelevanten Einträge der wp-config.php
  2. Einfügen in eine eigene Datei (Bsp. config.php)
  3. Abspeichern dieser Datei außerhalb des öffentlichen Stammverzeichnisses
  4. Einbinden dieser Datei in der wp-config.php

Konkret könnte die originale wp-config.php dann so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
/**
 * WordPress Config
 */
require_once(dirname(dirname(__FILE__)) . '/config.php');
 
// Lokalisierungs-Einstellungen
define('WPLANG', 'de_DE');
 
// Debug-Einstellungen
define('WP_DEBUG', false);
 
// WordPress-Einstellungen
if (!defined('ABSPATH'))
    define('ABSPATH', dirname(__FILE__) . '/');
 
require_once(ABSPATH . 'wp-settings.php');

Die config.php liegt in diesem Fall im übergeordneten Ordner und enthält die sensiblen Daten, wie Zugang zu Datenbank, FTP-Server oder auch die Sicherheitsschlüssel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
// MySQL-Einstellungen
define('DB_NAME',     'xxxxxx');
define('DB_USER',     'xxxxxx');
define('DB_PASSWORD', 'xxxxxx');
define('DB_HOST',     'localhost');
define('DB_CHARSET',  'utf8');
define('DB_COLLATE',  '');
$table_prefix = 'wp_';
 
// FTP-Einstellungen
define('FTP_HOST',  'xxxxxx');
define('FTP_USER',  'xxxxxx');
define('FTP_PASS',  'xxxxxx');
define('FS_METHOD', 'direct');
 
// Sicherheits-Einstellungen
define('AUTH_KEY',         'xxxxxx');
define('SECURE_AUTH_KEY',  'xxxxxx');
define('LOGGED_IN_KEY',    'xxxxxx');
define('NONCE_KEY',        'xxxxxx');
define('AUTH_SALT',        'xxxxxx');
define('SECURE_AUTH_SALT', 'xxxxxx');
define('LOGGED_IN_SALT',   'xxxxxx');
define('NONCE_SALT',       'xxxxxx');

Die Alternative

Es kann sein, dass man nicht die nötigen Rechte hat auf den Überordner zuzugreifen. Falls es erlaubt ist eine .htaccess-Datei anzulegen und mod_rewrite aktiviert ist, gibt es dennoch eine Variante, die wp-config.php vor der Öffentlichkeit zu schützen:

<files wp-config.php>
Order deny,allow
deny from all
</files>

Diese Regeln verhindern, dass die wp-config.php vom allgemeinen Web-User aufgerufen werden kann. Somit ist sie ebenfalls relativ gut geschützt.

Dir hat der Artikel gefallen?
Dann abonniere doch den RSS-Feed!
  • Wusste gar nicht das bei WordPress diese Datein einsehen kann…werde jetzt mal auf allen Blogs die wir betreiben die Methode mit der .htaccess Datei anwenden, hoffe das somit ein wenig mehr Sicherheit bei WP vorhanden ist und danke für den Tipp.

  • Hallo Phil, vielen Dank für deinen Beitrag – Die Sicherung über die .htaccess-Datei sollte man auf jeden Fall aktivieren. Habe dieses bei einem (Probe)Blog ausprobiert und es funktioniert wunderbar .. vielen Dank für den Hinweis .. 🙂

    LG Katja

  • Eignet sich auch hervorragend, um eine lokale version und eine Netzversion synchron zu halten. in der config.php kann man dann entsprechend andere Daten ablegen und kann dann den kompletten WordPress Ordner synchronisieren. Mache ich so ähnlich bei vielen Projekten.