Ich beschreibe kurz, wie ich in meine WordPress Artikel den Inhalt einer bestimmten Datei , die mit im Webspace liegt, einbinden kann. Sinnvollerweise ist das in WordPress erst einmal nicht erlaubt. Die Holzhammer-Methode, einfach PHP-Code mittels Plugin innerhalb der Beiträge und Seiten auszuführen gefällt mir auch nicht.
Das Grundsätzliche Problem bleibt, und sollte zum Denken anstoßen: Ein schwacher WordPress Account auf eigenem Server (z.B. im Uberspace) birgt ein großes Risiko. Hat ein Angreifer Zugriff auf einen WordPress Account mit ausreichenden Berechtigungen (oder eben besagte Plugins), kann er mit <?php include("passwd"); ?> möglicherweise Bereiche der Seite oder gar des Servers auslesen, die nicht für seine Augen bestimmt sind.
Nun gut, wieder zum Thema: Ich möchte solche Befehle nicht generell erlauben, sondern nur eine bestimmte Datei auslesen. In meinem Fall ist das die „current_mail“ Datei, die eine temporäre, aktuell gültige E-Mail Adresse enthält.
Dazu habe ich mir ein kleines Plugin geschrieben, das mir einen WordPress Shortcode (die Befehle in eckigen Klammern..) liefert, den ich immer dort einfügen kann, wo ich den Inhalt der besagten Datei stehen haben möchte.
Mein Plugin soll die E-Mail Adresse aus der Datei lesen, also heißt es „get-current-mail“
Um ein Plugin zu erstellen, geht ihr in euer WordPress Hauptverzeichnis zunächst den Ordner für das Plugin:
1 |
mkdir wp-content/plugins/get-current-mail |
Das gesamte Plugin besteht innerhalb des erstellten Ordners nur aus einer Datei. Nennt sie z.B. „get-current-mail.php“ und füllt sie mit diesem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php /* Plugin Name: Get Current Mail Description: Reads "current_mail" file from your ~/html, include via "[current_mail]" Author URI: http://8300111.de */ function get_current_mail() { ob_start(); include("current_mail"); $mail = ob_get_clean(); return $mail; } add_shortcode('current_mail', 'get_current_mail'); ?> |
Das ist überschaubar und verständlich:
In Zeile 10 kann die Datei bzw. der Pfad angepasst werden. Wer seinen WordPress Blog im Uberspace im ~/html Verzeichnis hostet, und dort auch die einzulesende Datei ablegt, muss nur den Dateinamen nennen (nicht den vollständigen Pfad). „add_shortcode“ erlaubt uns nun, innerhalb von Beiträgen und Seiten mittels der eckigen Klammern und dem Befehl „current_mail“, also [current_mail] , die daran verknüpfte Funktions aus dem Plugin, „get_current_mail()“ mit dem Include Aufruf auszuführen.
Das Plugin taucht, sobald Ordner und Datei existieren, im WordPress Verwaltungsbereich bei den installierten Plugins auf und muss noch aktiviert werden! Ab dann funktioniert der Shortcode.
Der Admin-Account kann natürlich auch Plugins ändern oder erstellen. Wenn dieser kompromittiert ist, ist sowieso der gesamte Uberspace in Gefahr. Am Besten 2FA aktivieren!
Verbesserungsvorschläge? In die Kommentare oder per Mail!