PHP-Scripte in wp-content ausführen mit Plesk
Hendrik Pilz / 20. Dezember 2017 / / Plesk Tools WordPress / noch keine Kommentare
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?