WordPress-Sicherheit und Kommentar-Styling

Kommentare sind in einem Blog das A und O. Dort kann gedankt, auf Fehler hingewiesen und diskutiert werden. Bei einem Blog-Theme ist es wichtig, dass die Kommentare übersichtlich angeordnet sind – man sollte auf einen Blick erkennen, wer welchen Artikel verfasst hat.

Um diese Trennung hinzubekommen, kann man Rahmen, Trennlinien, Farbflächen/-balken und so weiter verwenden. Das ist mit CSS kein Problem. Aber um diese Grundlagen soll es heute gar nicht gehen – ich will Euch nämlich etwas anderes zeigen.

Es gibt in WordPress die Möglichkeit, Kommentare des Autors eines Artikels anders zu stylen als die der „normalen“ Besucher. Dafür soll man – sagt zumindest WordPress-Codex – einfach die Funktion comment_class() verwenden.

Screenshot: Eigener Kommentar

Die unsichere Methode (nicht verwenden!)

Nicht nachmachen, was jetzt kommt! Das ist ein Sicherheitsrisiko! Beim Erstellen des Themes soll man für Kommentare diesen Code (stark vereinfacht) in der comments.php verwenden:

<li <?php comment_class(); ?>>
... HIER ALLES FÜR DEN KOMMENTAR ...
</li>

WordPress macht daraus beim Aufruf der Seite durch den Leser diesen (X)HTML-Code:

<li class="comment byuser comment-author-USERNAME bypostauthor odd alt depth-1">
... HIER STEHT DER KOMMENTAR ...
</li>

Die CSS-Klasse bypostauthor kann benutzt werden, um den Kommentar des Autors anders darzustellen. Allerdings ist das davor stehende comment-author-USERNAME problematisch: Der ominöse USERNAME ist nämlich der Benutzername, mit dem Ihr Euch in WordPress einloggt!

Jemand, der gern ins Backend rein will, hätte damit schonmal die Hälfte der Informationen, die er braucht. Okay, ein Kennwort ist umständlicher zu knacken, aber warum soll man es ihm so leicht machen? Versucht’s nicht: Mein Benutzername hier im Backend ist nicht NetzBlogR*. :-)

Die sichere Methode (darf verwendet werden)

Mit Hilfe von Vladimir (alias Perun) habe ich es geschafft, das Sicherheitsleck zu umgehen. Statt WordPress zu fragen und uns in Gefahr zu begeben, finden wir ganz einfach selbst heraus, ob der Kommentar vom Artikel-Autor selbst geschrieben wurde.

Hinweis: Wer keine Ahnung hat, sollte lieber jemand ranlassen, der sich auskennt oder besser gleich darauf verzichten. Ich übernehme keine Haftung für Schäden. Außerdem bin ich ein mieser Programmierer: Was bei mir funktioniert, muss nicht überall laufen.

Verbesserungsvorschläge nehme ich daher dankend an.

Hier der (stark vereinfachte) Beispiel-Code für die comments.php in einem Standard-Theme:

<li class="comment<?php if (($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {echo " bypostauthor";} ?>">
... HIER STEHT DER KOMMENTAR ...
</li>

So wird geprüft, ob die Kommentator-eMail-Adresse mit der des Artikel-Autors übereinstimmt und ob der Benutzer registriert ist. Damit ist relativ sichergestellt, dass es sich dabei wirklich um einen Kommentar den Artikel-Autors handelt.

Wenn das positiv überprüft wurde, macht WordPress das daraus:

<li class="comment bypostauthor">
... HIER STEHT DER KOMMENTAR ...
</li>

So kann man Kommentaren des Autors mit der CSS-Klasse bypostauthor ein eigenes Aussehen verleihen, ohne gleich Geheimnisse zu verraten. Wenn Euer Theme bereits ein anderes Styling für Autoren-Kommentare unterstützt, müsst Ihr also nicht mal was am CSS basteln.

Lasst zum Testen einfach mal den Quelltext eines Artikels anzeigen, in dem ihr selbst kommentiert habt und sucht nach der Zeichenkette „comment-author“. Wenn die nicht gefunden wird, ist Euer WordPress zumindest in dieser Angelegenheit sicher.

Falls die Zeichenkette jedoch gefunden wird, müsst Ihr in der comments.php im Prinzip (ich sage das deshalb, weil es in jedem Theme auch anders aussehen kann) nur nach

<?php comment_class(); ?>

suchen und das hier daraus machen:

class="comment<?php if (($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {echo " bypostauthor";} ?>"

Gefahr erkannt, Gefahr gebannt. Übrigens: Falls Ihr Euch mit dem Benutzernamen admin einloggt, ändert das unbedingt per Datenbank oder Plugin! Hacker kennen diesen Standard-Benutzer und versuchen den natürlich als erstes aus…

* Außerdem habe ich den Login-Screen durch eine .htaccess-Sperre verriegelt. Wenn schon, denn schon richtig sicher!

Hinterlasse einen Kommentar





Alle mit * gekennzeichneten Felder müssen ausgefüllt werden. Die eMail-Adresse wird nicht offen dargestellt.

Ich erlaube mir, reine Werbeeinträge oder persönliche Beleidigungen zu löschen. Anonyme Kommentare werden generell nicht mehr freigeschaltet: Ich schreibe hier als reale Person und darf erwarten, dass jeder zu der Meinung steht, die er äußert.