Eine Datei mit PHP include() in WordPress Artikel einbinden

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:

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:

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!

Dieser Eintrag wurde veröffentlicht in Alle Artikel, Wordpress und getaggt als , , , , , , , . Fügen Sie den permalink zu Ihren Favoriten hinzu.

9 Responses to Eine Datei mit PHP include() in WordPress Artikel einbinden

  1. Phate sagt:

    Ich glaube, einen kleinen Schreibfehler gefunden zu haben. ;)

    Du meinst doch bestimmt “In Zeile 10” und nicht “In Zeile 11” im letzten Absatz, oder?

    • Ben sagt:

      Korrekt! Gleich korrigiert – sehr aufmerksam, danke ;-)

      Hatte den Code noch ein bisschen formatiert, dabei ging wohl eine Zeile drauf..

      • Phate sagt:

        Kein Problem. Ich war gerade dabei, mir die Artikel zu qdated durchzulesen, weil ich irgendwann gern mal diese Trashmails nutzen möchte. Und wenn Texte gut geschrieben sind, dann fallen mir Fehler eher auf.

        Die Tutorials hier sind sehr gut verständlich, die werde ich sicher mal umsetzen können, danke dafür :-)

        • Ben sagt:

          Freut mich, das zu hören! Da ich das in den letzten 2-3 Tagen zusammengezimmert habe, war bis jetzt auch noch etwas Bewegung in den Beiträgen und Skripten – ich musste Fehler ausbügeln!

          Sag doch Bescheid, falls du noch etwas findest – oder ob alles geklappt hat!

          Gruß
          B

          • Phate sagt:

            Ich bin jetzt endlich mal dazu gekommen, die Wegwerfadressen bei mir einzubauen und sie funktionieren soweit ganz gut. Nur scheinbar habe ich einen Fehler. Ich habe mal diese Weboberfläche mit eingebaut und da kommt als Meldung “temp-default@meine-domain.tld abgelaufen! (wird aufgeraeumt)” zusätzlich zu den regulären Adressen. Irgendeine Idee dazu?
            Grüße

          • Ben sagt:

            Ja, ich denke, du hast für die temporär gültigen Adressen und für die Wegwerf Adressen das gleiche Präfix gewählt – darauf sind meine Skripte aber nicht ausgelegt (und ich glaube dass deine “temp-default” tatsächlich dann gelöscht wird).

            Also hast du wohl 2 Möglichkeiten: Unterschiedliche Präfixe (z.B. “temp” und “trash”) wählen oder die Skripte so bearbeiten, dass sie die temp-default ignorieren. Ich würde momentan ersteren Weg wählen!

          • Phate sagt:

            ja, das hatte ich dann auch herausbekommen, danke. :) Ich habe den selbst erstellbaren Mails das Präfix trash gegeben und fertig. Bei dem Skript, das deine ganzen Skripts automatisch installiert, ist mir ein Fehler aufgefallen. Da gab es in dem Skript, was die einzelne 7-Tage gültige Mail-Adresse erstellt, einen festen Timestamp, womit natürlich immer die selbe E-Mail erstellt wurde.
            Aber jetzt ist alles Top. Ich habe unter der ablaufenden E-mail eine Erklärung, was das ist, zusammen mit einem Link auf deine Anleitung, wenn dir das recht ist :)

  2. Gabriel Lohre sagt:

    Hallöchen,

    ich habe das Plugin noch ein wenig überarbeitet, um es für meine Bedürfnisse anzupassen.
    Dabei habe ich die Funktion hinzugefügt, die aktuelle Email-Adresse gleich zu verlinken.
    Man kann nun via [mail] den mailto-Link zur Email-Adresse einfügen und mit [printmail] die Email-Adresse im Klartext einfügen.

    Vielleicht kann es ja jemand auch gebrauchen :)

    Gruß, Gabriel

    <a href="mailto:”>E-Mail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.