Die neue Website ist erst ein paar Tage online und schon werden sämtliche Kommentarfelder fröhlich von Spambots zugebombt. Allein gestern waren es 26 zu prüfende Kommentare, ausschließlich Spam. Zum Glück hatte ich die Einstellungen so festgelegt, dass jeder Kommentar vor der Veröffentlichung geprüft werden muss, aber auf die Dauer kann es so nicht weitergehen.
Ich habe mir daher ein paar Gedanken gemacht, wie man diese nervigen Plagegeister aussperren kann und bin dabei auf eine simple, aber effektive Lösung gestoßen.
Es gibt mehrere Möglichkeiten, Kommentare in WordPress auf deren Inhalt zu prüfen. Zum Einen kann man das Eingabefeld mit einem Captcha, einer Rechenaufgabe oder einer Logikfrage versehen. Hier muss der Nutzer tätig werden. Zum Anderen gibt es Plugins wie Akismet bei dem die Inhalte auf mögliche Ungereimtheiten geprüft werden.
Warum kein Captcha etc.?
Wer hat sich nicht schonmal mit verschwommenden, undeutlichen Buchstaben rumärgern müssen, sich bei der Eingabe vertippt und hätte dann den kompletten Kommentar noch einmal schreiben müssen? Ich möchte zumindes in meinem Blog, dass User mögichst unkompliziert Kommentare verfassen / abschicken können und sich nicht mit “Bist du ein Mensch”-Fragen aufhalten müssen. Name, Emailadresse und Kommentar sollen reichen.
Warum kein Plugin wie Akismet?
Die Daten werden hier zu einem externen US-Server zur Verifizierung geschickt, abgeglichen und als gut/schlecht bewertet wieder zurückgesendet. Nicht dass ich kein Vertrauen in annonymisierte Datenverarbeitung hätte, aber ist es wirklich notwendig, dass sämtliche Kommentare “Dritten” von denen ich nicht genau weiß wer dahintersteckt, auf dem Silbertablett serviert werden? Ich denke nicht.
Warum nicht einfach den Spieß umdrehen?
Bisher mussten immer die User tätig werden und sich als “Nicht-Maschine” identifizieren. Wieso geht man nicht einfach den umgekehrten Weg und zwingt den Bot, sich als “Nicht-Maschine” zu beweisen.
Im Klartext: Ich entwerfe einen Code der zwei Tatsachen prüft: JavaScript vorhanden und Intelligenz des “Feldfüllens”.
JavaScript eigentlich nur deswegen, weil es mittlerweile bei quasi jedem menschlichen User im Browser generell aktiviert ist, damit auch der volle Umfang einer Internetseite dargestellt werden kann. 99% aller Bots unterstützen aber kein JavaScript und können damit auch nichts anfangen.
Mit diesem Hintergrundwissen kann man nun im Kommentar-Formular zwei versteckte, also für User unsichtbare Felder einfügen. In das erste wird per JavaScript (wenn dieses aktiviert ist) automatisch die Jahreszahl eingetragen, die dann später auch überprüft wird. Das andere Feld muss leer bleiben.
Für den Fall dass ein Bot kein JavaScript unterstützt, wird er bereits hier scheitern, da er in das Feld in dem die aktuelle Jahreszahl erwartet wird, alles mögliche eintragen wird, nur eben nicht die Jahreszahl. Der Bot weiß ja nicht, dass das Feld für den User unsichtbar ist nur nur per JS ausgefüllt werden soll.
Im Falle eines Bots, der auch mit JavaScript etwas anfangen kann, wird zwar die Jahreszahl im ersten Feld richtig eingetragen, in das zweite Feld, das ja leer beleiben soll, wird er aber mit ziemlicher Sicherheit auch irgendentwas eintragen. Wie gesagt, er weiß ja nicht, dass ein menschlicher User das Feld garnicht sieht und “kein Inhalt” erwartet wird.
Das schöne an der Sache ist: Der User hat in diesem Fall keinerlei zusätzlichen Aufwand zu leisten, er merkt garnicht, dass hier noch zwei weitere Eingabefelder existieren.
Nach diesem Prinzip wurden bereits im CMS auf meiner alten Website Gästebucheinträge gefiltert und hat sich über die Jahre bestens bewährt. Bevor ich allerdings anfing, wild losprogrammierten, schaute ich mich ersteinmal um ob es da nicht schon ein passendes Plugin für WordPress geben würde. Nach kurzer Recherche stieß ich dann auf Anti-Spam, das genau diese Funktionalität zur Verfügung stellt.
Also: Plugin installieren und spamfrei sein.
Ich habe auch dieses Problem. Werde ich gleich mal testen. Danke für den Tip!