FastWP

WordPress. Performance.

Wie werde ich ihn los – in 10 Tagen? Eine Anekdote über Spam.


Auf Facebook teilen
Eine Anekdote über Spam

Wie wird man Spam am effektivsten los? Eine Frage, die ich mir vor kurzem stellte.

Ein Film als Titelgeber

Bevor jetzt irgendwer meckert, der Titel wäre kopiert – ist er. Wie werde ich ihn los – in 10 Tagen? ist eigentlich ein Film. Eine Komödie aus dem Jahr 2003, mit Kate Hudson. Schlecht bewertet, aber ich find ihn irgendwie witzig. Im Grunde ist er nämlich identisch mit dem Film Love Vegas, in dem Cameron Diaz die Hauptrolle spielt, nur mit vertauschten Rollen. Das hat mich irgendwie immer schon fasziniert, wie Hollywood zwei mal denselben Film bringt und verkauft. Also zumindest fast. »Weiberfilme«, höre ich den ersten schreien. Okay, mag sein, aber wenn dein Hirn einfach nicht aufhört zu arbeiten, immer rattert und du am Abend daher nicht mehr runterkommst, dann helfen dir eben nur »Weiberfilme«, zumindest wenn du nicht gerade auf Drogen und Alkohol stehst. Dann doch lieber lockere Komödien, mit denen du entspannst und mit denen du langsam wegdämmerst, weil sie so bedeutungslos und stumpf sind. Aber darum soll es hier gar nicht gehen, warum halte ich mich also mit so einer Einleitung auf?

Zehn Tage, um Spam loszuwerden

Der Titel passt deswegen so gut, weil er ein wenig zur thematisierten Situation passt. Es geht um Spam. Mit der Reaktivierung der Kommentarfunktion hier auf FastWP, hat sich nämlich das Problem mit dem Spam wieder eingenistet. Ganze zehn Tage hat der Kampf und die Suche nach einer Lösung zwar nicht gedauert, aber irgendwie klingt der Titel doch ganz witzig und gefühlt waren es ganz sicher 10 Tage. Beim Testen im Live-Betrieb, waren es sogar eher noch mehr. Nehmt es mir also nicht krumm, dass ich den Post danach benennen wollte. Er sollte halt auf lockere Art und Weise erklären, wie ich selbst nach einer Lösung, fernab der typischen Plugins suchte. Naja, zum Teil, denn am Ende sind Antispam-Maßnahmen halt doch irgendwie immer dasselbe, nur anders verpackt. Wichtig war mir aber effektiv zu sein, möglichst wenig Ressourcen zu verschwenden, sowie nicht ständig eine Vielzahl verschiedener Kontrollen laufen zu haben.

Spamschild

Ein Schild, wie am Briefkasten, reicht bei Spam leider nicht aus. Spammer sind anonym und halten sich nicht an Regeln. | CC0 License/pixabay.com

Tag 1: Die üblichen Verdächtigen

Schon wieder ein Filmtitel? Seht bitte darüber hinweg, denn er passt nun einmal ganz gut. Bei mir sind die üblichen Verdächtigen die Antispam Plugins für WordPress. Es gibt eine Vielzahl von ihnen. Kostenpflichtig, kostenlos, Freemium und weiß der Geier was es noch alles gibt. Nach dem Aktivieren der Kommentare hier auf FastWP, musste natürlich sofort ein Spamschutz her, denn es dauert nur Minuten, bis die ersten Bots vorbeischauen und ihre Fake-Kommentare mit bösen Links hinterlegen. Antispam Bee ist in diesem Falle mein üblicher Verdächtiger, denn das Plugin hat mir früher immer gute Dienste erwiesen. Das ist, seit Sergej es nicht mehr selbst weiterentwickelt, sicherlich anders geworden, aber nach wie vor filtert es Spam mehr oder weniger zuverlässig heraus und arbeitet dabei auch recht effektiv. Das Problem bei einem Antispam Plugin ist nur, dass egal wie effektiv und minimal es auch programmiert wurde, es immer noch eine recht komplexe Lösung, für ein eigentlich einfaches Problem ist. Spamschutz frisst Ressourcen. Plugins die alles mögliche kontrollieren und validieren, fordern halt ihre Leistung ein. Das mag ich als Performance-Fanatiker natürlich gar nicht. Außerdem wurde bei Antispam Bee die Funktion entfernt, die alle anderssprachigen Kommentare blockte. Und auch wenn Sergej einen GEOBlock zur Verfügung stellen würde, der eventuell in einer kommenden Version Verwendung findet, oder das Team einfach eine andere Translate API nutzen könnte, ist ein umfangreiches Plugin eigentlich das Gegenteil von dem was ich suche. Demnach war das Antispam Plugin für WordPress auch nur die Notlösung für Tag eins.

Tag 2: Das gute alte Captcha

Meine effektive Lösung für Tag zwei war das reCaptcha von Google. Das sollte jedem bekannt sein, arbeitet zuverlässig und filtert auch auf niedrigster Sicherheitsstufe den kompletten Spam heraus. Wie ihr das reCaptcha von Google als Antispam-Lösung in WordPress integriert, hatte ich hier bereits erklärt. Das funktioniert übrigens nach wie vor einwandfrei. Damit das Captcha möglichst einfach ist, müsst ihr in den Einstellungen bei Google noch die niedrigste Sicherheitsstufe wählen. So bleiben viele Besucher von den extra Abfragen verschont, weil schon vorab klar ist, dass es sich nicht um Roboter handelt. So weit so gut. Wäre da nicht die Sache mit dem Datenschutz. Zwar verwenden viele Deutsche Anbieter das reCaptcha, aber wer weiß schon was davon dem Datenschutz entspricht? Welche größere Seite kann den deutschen Datenschutz überhaupt wirklich gerecht werden? Fragen über Fragen. Zumindest DHL hat etwas in ihren Datenschutzbedingungen dazu stehen (unter »Erhebung und Verarbeitung von personenbezogenen Daten«), was abgewandelt auch für Blogs nutzbar wäre. Aber auch da ist unklar, ob das nun wirklich ausreicht, oder ob dir wieder irgendein Datenschutz-Fanatist mit dem symbolischen Sprengstoffgürtel entgegenkommt. Also Captcha wieder ausbauen. Ist eben Deutschland und ich gehe lieber auf Nummer sicher, zumal ich Google eh nicht mag und Daten von meinen Besuchern sollen die auch nicht kriegen. Außerdem sind Captchas, egal wie angenehm und clever sie gelöst werden, immer ein wenig nervig für den Nutzer, der seine Eingabe damit ja zusätzlich bestätigen muss. Ein bisschen so wie ein klassischer Kopierschutz, welcher ja auch erst einmal davon ausgeht, das alle Nutzer potenzielle Raubkopierer sind. Also eigentlich nicht so geil. Ihr kennt das Drama. Wenn nicht, klärt euch das Video unten darüber auf, was mit Captchas nicht stimmt.

Tag 3: Bau dir eine Honigfalle

Wir alle kennen die klassischen Honigfallen. Zu süß, als das Bots daran vorbeigehen könnten und dementsprechend kleben bleiben. Aber bringt es die alte Form des Honeypots wirklich noch? Früher reichte es bei Spam-Kommentaren beispielsweise, ein unsichtbares Input-Feld in den Kommentarbereich von WordPress zu integrieren. Bots füllten selbiges dann automatisch aus und sofort wusste man als Admin, dass dahinter kein echter Nutzer stecken kann, denn der hätte das Feld schließlich gar nicht erst gesehen. Aber reicht das auch heute noch? Eher nicht, schließlich sind Bots ganz schön schlau geworden und Spammer natürlich auch. Ein Versuch am dritten Tag zeigte aber, dass sich durch den Honeypot bereits eine Menge Spam herausfiltern lässt. Natürlich längst nicht der komplette Spam, aber immerhin etwas. So blieben am Ende des Tages nur wenige Spam-Kommentare bestehen und das bedeutete auch, dass ich weiter nach einer Lösung suchen musste. Die normale Honigfalle reichte erwartungsgemäß nicht mehr aus.

Tag 4: Honig mag ich gerne

Nun liebe ich simple Lösungen und Honigfallen sind genau das. Sie prüfen keine IPs, sie filtern keine langen Listen, suchen nicht nach Mustern, oder ähnlich aufwändigem Zeug. Honigfallen sind einfach nur da. Wer reintappt, ist ein Spammer. So einfach ist das. Fertig und aus. Die Honigfalle vom dritten Tag zeigte, dass das System nach wie vor funktioniert, nur eben nicht immer und nicht mehr als verstecktes Input-Feld. Aber warum eigentlich nicht? Am vierten Tag wollte ich genau das herausfinden und begann herumzuspielen. Zum Beispiel, indem ich die wp-comments-post.php für direkte Zugriffe einfach blockierte, indem ich einen entsprechenden Code in die .htaccess integrierte. Konnte schließlich keiner wissen, ob das nicht schon reichen würde, um den restlichen Spam auch noch zu filtern. Reichte leider nicht, aber für Tag fünf hatte ich bereits eine neue Idee, da ich damit schon gerechnet hatte. Aber wer nicht testet, kann nie sicher sein.

Tag 5: Mehr Honig hilft vielleicht

Am fünften Tag hieß es also erst einmal weiter überlegen, um die Honigfalle cleverer zu gestalten. Wenn immer noch Spam durchkommt, wie kriege ich die verflixten Bots dazu, das dumme Feld auszufüllen und so doch noch in die Falle zu tappen? Zunächst verlegte ich das Feld nach oben. Direkt über das Feld für den Namen. Vielleicht ignorieren sie es ja nur deswegen, weil es ein zusätzliches Feld unterhalb das Formulars ist. Bots sind clever geworden, ein Versuch war es also wert. Brachte nur leider nichts. Immer noch kam der übriggebliebene Spam durch. Okay, versteckte Felder sind voll 90er, machen wir es doch einfach sichtbar. Füllen es die Bots dann aus und tappen in die Falle, wenn es sichtbar ist? Der fünfte Tag verging, der Spam kam. Klar, allgemein weit weniger als am Anfang, aber Spam war trotzdem noch da. Also weiter nachdenken, grübeln, es einfach besser machen. Wie kriege ich die verdammten Bots dazu, das Feld auch tatsächlich zu benutzen? Wie trickse ich sie aus, ohne dafür aberwitzige Parameter oder Checks zu verwenden?

Aufgereihte Honiggläser

Wenn die Honigfalle nicht wirkt, ist vielleicht zu wenig Honig enthalten. Mehr Honig könnte also die Lösung sein. | CC0 License/pixabay.com

Tag 6: Ich hab da eine Idee

Am Morgen des sechsten Tages kam mir dann die Idee. Wenn die Bots denken, es wäre das offizielle Feld von WordPress, müssten sie es doch zwingend ausfüllen, da sie sonst keinen Kommentar hinterlassen können. Eigentlich total logisch. Also am Snippet herumgeschraubt, sodass das erzeugte Feld exakt dem Author-Feld von WordPress glich, also dem, wo zwingend der Name eingetragen werden muss. Das Problem ist nur, wenn es exakt dasselbe Feld ist, wird natürlich auch das Original-Feld von WordPress als Spam blockiert, da es ja dieselben Parameter verwendet. Also musste das Original noch umgeschrieben werden. Am besten ebenfalls automatisch über ein Snippet. Das Author-Feld wurde also umbenannt, die Honigfalle dagegen wurde als offizielles Author-Feld getarnt. Damit es ganz sicher passte, kopierte ich das komplette Feld von WordPress, wie ich es auf der Seite im Quellcode sehen konnte. Die Honigfalle glich also exakt dem Original, das Original hingegen bekam einfach eine andere Bezeichnung. Mal abwarten was jetzt passiert, dachte ich am Abend des sechsten Tages.

Tag 7: Unglaublich aber wahr

Tja und das war es dann auch tatsächlich. Dadurch, dass die Honigfalle als Originalfeld von WordPress getarnt wurde, wurde sie von den Bots auch nicht mehr ignoriert oder übergangen, sondern entsprechend ausgefüllt. Da im Admin unter »Einstellungen -> Diskussion« außerdem noch die Option »Benutzer müssen zum Kommentieren Name und E-Mail-Adresse hinterlassen« aktiviert war, musste das neue Feld außerdem korrekt ausgefüllt werden. Ein ganz simpler Spamschutz, der zu funktionierten schien und kein bisschen Spam mehr durch den Filter rutschen lies. Sehr minimal, aber eben auch sehr effektiv.

Tag 8: Kein Spam seit drei Tagen

Auch Tag acht zeigte, dass meine Honigfalle durchaus Wirkung zeigte. Am achten Tag gab es nämlich ebenfalls keinen Spam und das ohne irgendwelche IP-Checks, Mustererkennung, oder Prüfung auf Links bzw. BB-Code. Im weiteren Verlauf spielte ich noch ein wenig mit den Parametern und merkte, dass die Autocomplete-Funktion von Browsern unbedingt im Feld deaktiviert werden sollte, da eventuell bereits vorhandene Eintragungen sonst automatisch in das Feld, welches nun ja als offizielles Author-Feld getarnt war, eingefügt werden würden, was wiederum die Honigfalle aktivierte und den Kommentar blockte. Überhaupt schien es clever, den Cookie für Kommentare entweder umzuschreiben, oder komplett zu deaktivieren, damit gar keine Formulardaten gespeichert werden. Deaktivieren geht ganz einfach mit Snippet, umschreiben wäre dagegen eher etwas für eine Plugin-Lösung. So könnte man den Cookie mit gespeicherten Formulardaten weiterhin verwenden, trotz Antispamfalle. Nachdem darüber nachgedacht wurde, wollte ich noch wissen, ob nicht auch andere Parameter dafür sorgen, dass Bots die Honigfalle erkennen.

Kampf gegen den Spam gewonnen

Auch am achten Tag kein Spam mehr. Sieht fast so aus, als hätte ich den Kampf gegen Spam-Kommentare endlich gewonnen. | CC0 License/pixabay.com

Tag 9: Alles sauber im Blog

Am neunten Tag zeigte sich dann, dass es tatsächlich zum Großteil das »name=“author“« ist. Egal wie viel vom Originalfeld kopiert wurde, ohne das »name=“author“« gab es immer wieder Spam-Kommentare. Im Umkehrschluss heißt das natürlich auch, dass auf alle anderen Parameter verzichtet werden kann, um den Code noch schlanker und effektiver zu gestalten. Nach einigen Anpassungen, hatte ich dann die finale Testversion, die nun für einige Tage, oder auch Wochen durchlaufen sollte, um auf Nummer sicher zu gehen, dass alles wie gewünscht funktioniert. Erst danach wollte ich hier berichten.

Tag 10: Keine besonderen Vorkommnisse

Die Honigfalle funktioniert perfekt. Das Problem bleibt, dass das Author-Feld so nicht mehr zu verwenden ist. Der Cookie von WordPress, der Name, E-Mail und URL automatisch ausfüllt, füllt so nämlich nur noch E-Mail und URL aus, der Name bleibt leer. Für alle die bereits kommentiert haben, sorgt das für Verwirrung. Den Cookie abzuschalten, hilft zwar, löst das Problem aber nicht. Wäre das nun ein Plugin, müsste ich das ganze so umschreiben, dass das Author-Feld die Spamfalle bleibt und WordPress automatisch registriert, dass das Author-Feld einen neuen Namen bekommen hat. Dann würde es problemlos funktionieren. Dann frisst ist es aber auch wieder mehr Ressourcen, was ich ja gerade nicht wollte. Am Tag 10 änderte ich also noch einmal alles und erstellte zwei sichtbare, aber durch CSS mehr oder minder unsichtbar gestaltete Input-Felder. Das eine durfte nicht ausgefüllt werden, das andere musste ausgefüllt werden. Ein kleines Script füllt das zweite automatisch aus und da Javascript bei Spammern normalerweise nicht aktiv wird, ist die Lösung relativ simpel und stark in ihrer Wirkung. Überhaupt bringt es die doppelte Variante auf den Punkt. Geht der Spam Bot nämlich davon aus, zusätzliche Felder einfach auszufüllen, tappt er in die Falle. Geht er dagegen davon aus, sie lieber zu ignorieren, aus Angst vor eventuellen Honigfallen, tappt er ebenfalls in die Falle. Und wenn er kein Javascript ausführt oder versteht, dann sowieso. Auch wenn die andere Lösung auf den ersten Blick eleganter scheint, so wirkt diese hier auf den zweiten Blick noch viel effektiver und ist dazu sogar simpler. Zwei Felder, als doppelte Sicherheit gegen Kommentarspam. All das werde ich jetzt noch ausgiebig testen und die fertige Version dann in einem extra Artikel noch einmal haargenau vorstellen.

Wie werde ich ihn los – in 10 Tagen?

Wie werde ich ihn los – in 10 Tagen? So lautete die Überschrift dieses Artikels. Tag zehn ist nun vorüber und ich bin den Spam, so scheint es derzeit, tatsächlich sehr zuverlässig losgeworden. Mit der guten alten Honigfalle und ein wenig neumodischer Tarnung. Das bedeutet am Ende nur wenige Zeilen Code, statt einem fetten Antispam Plugin. Vielleicht ist das aber auch eine Methode, die sich das ein oder andere Antispam Plugin für WordPress zu Herzen nehmen sollte. Warum nicht auch so einen Filter integrieren, warum ihn nicht noch umfangreicher gestalten, oder individueller zusammenbauen? Für ein Plugin wäre das durchaus denkbar und effektiver als viele aktuelle Mechanismen, gerade die Idee mit dem Author-Feld als Tarnung. Wenige Zeilen Code, statt ständiger, unnötiger Kontrollen, dürften doch auch für Antispam Plugins das große Ziel sein. Wenige Zeilen Code, ganz ohne Datenschutzprobleme, oder IP-Adressen und ohne viel Umwege. Und um bei Filmtiteln und Zitaten zu bleiben: »Ich liebe es, wenn ein Plan funktioniert.«


Auf Facebook teilen