HARALD MELCHER

WordPress-Sicherheit erhöhen

WordPress PHP-Skripte rufen nach Start auch die PHP-Skripte der Themes und die Plugin-Skripte auf. Der Aufruf dieser Skripte erfolgt also von anderen Skripten aus und nicht durch Zugriff von Browsern auf die Skript-URLs. Ein direkter Aufruf dieser Skripte ist im Normalfall nicht vorgesehen, wobei es einzelne Themes and Plugins gibt, die diesen Aufruf nutzten könnten, z.B. zum Hochladen von Formulardaten – wofür WordPress eigentlich standardisierte und bessere Möglichkeiten hat.

Direkte Ausführung von Skripten in Unterverzeichnissen verbieten

Jedes Verzeichniss kann eine Datei .htaccess enthalten, die der jeweilig eingesetzte Webserver unter anderem für die Rechteverwaltung des aktuellen Verzeichnisses und seiner Unterverzeichnisse nutzt.

Ist die .htaccess-Datei im Verzeichnis /wp-includes/themes untergebracht, verhindert sie das direkte Ausführen von PHP-Code in Themes.

Direkte Ausführung von Plugin-Skripten sperrt die .htaccess-Datei im Verzeichnis /wp_content/plugins.

Das Vorgehen ist je nach Webserver etwas unterschiedlich:

Apache Webserver

Der folgende Code im Verzeichnis von Themes oder Plugins sperrt die direkte Ausführung von Skripten beim Apache Webserver ab Version 2.4:

# Kein direkter Zugriff auf *.php files 
# in diesem Ordner und Unterordnern

<FilesMatch \.php$> 
   Require all denied 
</FilesMatch>

nginx Webserver

Dieser Code sperrt die direkte Ausführung von Skripten beim nginx Webserver:

# Kein direkter Zugriff auf *.php files 
# in diesem Ordner und Unterordnern
location ~ (^/wp-includes/plugins/.+\.php|^/wp-includes/themes/.+\.php) { 
   return 444; 
}