PHP-Scripte in wp-content ausführen mit Plesk

Hendrik Pilz / 20. Dezember 2017 / / Plesk Tools WordPress / noch keine Kommentare

rundum.digital | blog - PHP-Scripte in wp-content ausführen mit Plesk

Mit dem WordPress-Toolkit von Plesk lassen sich WordPress-Installation zusätzlich absichern. Leider wird durch die strengen Sicherheitsmaßnahmen auch die Funktionalität von so manchen Plugins negativ beeinflusst. So lässt sich bspw. die Ausführung von PHP-Scripten unterhalb des wp-content-Verzeichnisses komplett verbieten. Damit soll verhindert werden, dass PHP-Scripte, die von einem Angreifer auf den Server geladen wurden, ausgeführt werden. Plugins und Themes sind allerdings auch unterhalb von wp-content installiert. Versuchen diese nun, z.B. ein PHP-Script für eine Ajax-Funktion aufzurufen, wird die Anfrage vom Server mit einem 403-Fehler (Zugriff verboten) abgelehnt.

Damit wir den wp-content-Schutz aktiviert lassen können, benötigen wir eine Möglichkeit, ein einzelnes Script zu erlauben. Dafür nutzen wir in Plesk die Möglichkeit, die Webserver-Konfiguration individuell anzupassen. In unserem Setup nutzen wir nginx als Reverse-Proxy und Apache als eigentlichen Webserver.

Als Beispiel wollen wir den Zugriff auf die Datei „ajax.php“ vom Plugin „tollesplugin“ erlauben.

Die folgenden Code-Schnipsel müsst ihr unter „Einstellungen für Apache & nginx“ in das jeweilige Text-Feld einfügen:

Zusätzliche Anweisungen für HTTP / HTTPS:

<Location "/wp-content/plugins/tollesplugin/ajax.php">
    Require all granted
</Location>

Zusätzliche nginx-Anweisungen:

location = /wp-content/plugins/tollesplugin/ajax.php {
    proxy_pass https://<Plesk-IP>:7081;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header X-Accel-Internal /internal-nginx-static-location;
}

Für <Plesk-IP> müsst ihr die IP-Adresse eurer Plesk-Installation korrekt eintragen.

Für Inhalte in wp-includes könnt ihr genauso vorgehen.

Was sagst du dazu?