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!