Skip to content

Honig für Kommentar Spammer

Janek hat mich auf Google+ wieder auf etwas gebracht, was ich schon lange mal testen und implementieren wollte: Einen Honeypot für den Kommentarbereich.

Ein Honeypot (Honigtopf) ist eine ziemlich einfache Methode, um Spambots zu erkennen, die automatisiert Kommentare abgeben wollen. Obwohl diese Methode schon mindestens seit 5 Jahren im Einsatz und beschrieben ist, scheint sie laut meinen Tests immer noch sehr effektiv zu sein.

Funktionsweise

Der Honig für die Bots wird ausgelegt, indem man im Kommentar Formular eine Eingabezeile hinterlegt, die per CSS versteckt wird. Echte Besucher des Blogs, die kommentieren wollen, sehen diese Eingabe also nicht und lassen sie folgerichtig leer. Kommentar Bots haben aber die Eigenschaft, dass sie alle Eingabefelder zu füllen versuchen, um sicher zu stellen, dass der Kommentar nicht durch ein benötigtes aber leeres Feld abgewiesen wird. Eine weitere Eigenschaft ist, dass Bots nur das reine HTML auslesen und somit nicht erkennen können, dass ein Feld gar nicht sichtbar ist (wenn man dies über eine externe CSS Datei macht).

Bots müssen Kommentarfelder sogar analysieren, damit sicher gestellt ist, dass die zu bewerbende URL in der URL Eingabe ist, der Text im Kommentarfeld usw. Somit sollte die Honeypot Eingabe einen sinnvollen Namen und ein Label haben. Mein  Honigtopf fragt im Blog scheinbar die Telefonnummer ab und in der Tat füllen die Bots diese Eingabe mit Zahlenkombinationen.

Im Einsatz

Ich habe den Honeypot in mein CommentSpice Plugin eingebaut und zeichne die Resultate im Moment auf. Die Testergebnisse sind äußerst zufrieden stellend: Die Datenbank füllt sich mit Kommentaren, die von CommentSpice als Bot erkannt wurden. Die Fehleranfälligkeit (False Positives) ist technisch bedingt extrem gering, eigentlich kann der Honigtopf nur in erzwungenen Situationen falsch anschlagen.

Der Vorteil des Honigtopfes (im Vergleich zum Bayes z.B.) ist also eine sehr gute Trefferquote ohne dabei die Datenbank benutzen und unter Last legen zu müssen (wenn man das Logging ausschaltet). Ich lasse den Kommentarbereich nun also zuerst von CommentSpice überprüfen, danach vom Bayes und ganz zum Schluss vom normalen Antispam Plugin (das bisher schon nichts zu tun hatte).

Resultat: Im Bayes Papierkorb ist jetzt schon länger nichts mehr zu finden! Die Spam Kommentare, die sich dort bisher sammelten, wurden also bereits vom Honeypot abgefangen. Im Spamlog kann man das auch schön nachvollziehen. :-)

Trackbacks

Der Standardleitweg

Der Standardleitweg am : Honig statt Captchas

"Honig statt Captchas" vollständig lesen
Vor ziemlich genau zwei Jahren hatte ich hier die Captchas deaktiviert bzw. zurückgefahren. Zuletzt musste nur bei Einträgen die älter als eine Woche sind eine verzerrte Zeichenfolge richtig erkannt werden. Zusammen mit dem Bayes Plugin hat das die meist
Grischa

Grischa am : CommentSpice 1.0 veröffentlicht

"CommentSpice 1.0 veröffentlicht" vollständig lesen
Mein lokales Repository sagt mir, dass ich meine "Plugin Spielwiese" CommentSpice vor ziemlich genau einem halben Jahr zum ersten Mal eingecheckt habe. Seit dem wurde das Plugin hier in diesem Blog und drüben bei Rowi ausgiebig getestet. Es
Grischa

Grischa am : Hinweise zu CommentSpice 1.01

"Hinweise zu CommentSpice 1.01" vollständig lesen
Matthias Mees hat überprüft, ob er in sein 2k11 Template für Serendipity gleich eine Unterstützung für die zusätzlichen Kommentar Elemente von CommentSpice integrieren kann. Dadurch hatte ich eine interessante Diskussion per
Grischa

Grischa am : Die Spamschutz Biene

"Die Spamschutz Biene" vollständig lesen
Auf Wunsch vieler habe ich die Spamschutz Funktionen in Comment Spice in ein neues Plugin ausgelagert: Die Spamschutz Biene. Dieses Plugin soll mit Tricks, die möglichst wenig Konfigurationsaufwand benötigen, Kommentar Spam vom Blog fern halten.

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Matthias Mees

Matthias Mees Auf Twitter lesen: am :

Wie versteckst Du diese Zeile denn genau per CSS? Je nach Methode kann es nämlich sein, dass sie für Screenreader trotzdem „sichtbar“ ist, sprich: vorgelesen wird, was unschön wäre.

Mit { display: none; visibility: hidden; } solltest Du auf der sicheren Seite sein.

Matthias Mees schrieb auch: Umdekoriert

Grischa

Grischa Auf Twitter lesen: am :

Exakt so verstecke ich die Eingabe. :-)

Ich hatte vorher einen Bericht dazu gelesen, wie Screen Reader auf einen Honeypot reagieren. Da wurde zusätzlich noch empfohlen, autocomplete="off" mitzugeben. Aber dann unterscheidet sich die Eingabe auffällig von den anderen, was das Ergebnis verschlechtern kann. Deshalb habe ich das erst mal draußen.

Wäre interessant, wenn mal jemand mit Screen Reader einen Blick auf meinen Kommentarbereich werfen könnte. Allerdings ist der "placeholder" für das Element auch recht eindeutig für Menschen:

"You don't want to give me your number, do you? ;)"

Grischa schrieb auch: S9Y Microblogging per Mail auf Uberspace

Janek

Janek am :

Schau in den Quellcode. Das ist in der Tat das, was hier verwendet wird.

Meine Überlegung wäre jetzt übrigens, ob es nicht sinnvoll wäre, das in das Bayes-Plugin zu integrieren oder in ein Extra-Plugin auszulagern. Dann könnte man nämlich per Honeypot vorfiltern und dann per Bayes nachprüfen. Das würde dazu führen, dass Bayes nur noch als Feinfilter verwendet wird, entsprechend könnte man dann auch das Abweisen von Kommentaren ausschalten und nur noch die Moderation verwenden. Dadurch würden keine Ham-Kommentare mehr fälschlich als Spam abgewiesen und man hat trotzdem einen Bot-Schutz mit einer Trefferquote von 99% und einem geringen Nervfaktor durch Moderations-Benachrichtigungen.

Der Nachteil des Honeypots ist halt, dass er dann nicht mehr funktioniert, wenn jemand einen Spambot speziell für eine Seite oder eine Software (in diesem Fall Serendipity mit Bulteproof- oder 2k11-Template) schreibt. Dieses Risiko würde durch die Honeypot-Bayes-Mischung auch abgefangen. Wenn es dann noch Möglichkeiten der Variation durch Konfiguration im Backend gäbe wäre es eigentlich perfekt.

Grischa

Grischa Auf Twitter lesen: am :

Nun, der Honeypot ist ja in einem eigenen Plugin, kann somit vor das Bayes geschaltet werden. Hier im Blog ist also bereits das von Dir beschriebene Verhalten: Erst der Pot, was der durchlässt geht dann halt noch mal durch das Bayes.

Ich habe mir auch schon Gedanken dazu gemacht, wie man auf Bots reagieren kann, die explizit auf diese Konfiguration zugeschnitten Seiten kommentieren. Die Styles und Bezeichnungen könnte man mit einer Art Zufallswert setzen, das von Blog zu Blog verschieden wäre (somit nicht am HTML Code zu erkennen). Am besten über ein Dictionary, das "vernünftige" Worte hat.

Die Bezeichnung "Phone", die vermutlich im Moment einiges bringt, wäre dann allerdings weg, aber man könnte den "Typ" auch explizit in der Plugin Konfiguration angeben lassen.

Dirk Deimeke

Dirk Deimeke Auf Twitter lesen: am :

Ich bin generell auch bereit, zu testen.

Wird der Honeypot bei Comment Spice bleiben oder kommt er in ein eigenes Plugin? Letzteres würde ich bevorzugen.

Grischa

Grischa Auf Twitter lesen: am :

Eigentlich soll er in CommentSpice bleiben. Allerdings kannst Du dort auch alles ausschalten außer eben dem Honeypot.

Dirk Deimeke

Dirk Deimeke Auf Twitter lesen: am :

Kannst Du darüber bitte noch einmal nachdenken?

Ich habe kein Problem damit, mir Comment Spice zu installieren und zu nutzen. Aber als neuer Nutzer würde ich eine Antispam-Funktionalität nicht in einem "Kommentarbereichsverbesserungsplugin" suchen.

Grischa

Grischa Auf Twitter lesen: am :

Die Suchbegriffe "AntiSpam" und "Honeypot" erscheinen auch in der Beschreibung. Ich werde dann auch noch die Plugin Kategorie "Anti Spam" hinzu fügen. :-)

onli

onli am :

Klingt ziemlich gut. Was für einen Fokus hat commentspice? Wenn ich das hier richtig sehe und es den Kommentarbereich erweitern soll, könnte das zum livecomment-Plugin passen (das ja inzwischen "Erweiterter Kommentarbereich" heißt).

Die Honeypotfunktion fände ich dann aber auch passender in einem separaten Plugin, dann könntest du das auch sicher recht leicht und schnell veröffentlichen, oder im allgemeinem Spamblock-Plugin, auch wenn das schon sehr viele Optionen hat.

PS: Auch dieser Kommentar wurde mir zuerst als Spam abgewiesen, deshalb füge ich hier noch dieses PS hinzu, in der Hoffnung, dass es die Wertung drückt.

Grischa

Grischa Auf Twitter lesen: am :

Das ist interessant.. Das ist der einzige Kommentar, den das Bayes heute raus gefiltert hat. Hast Du dafür was eingebaut, dass es Dich erkennt? ;-)

Janek

Janek am :

Wahrscheinlich liebt dich das Plugin.

Aber aus genau diesem Grund würde ich bei Verwendung von Honeypot + Bayes die Reject-Funktion abschalten und nur die Moderationsschleife verwenden. Wie du sagst, war das der einzige Kommentar, der bisher heute von Bayes rausgefiltert wurde. Die Anzahl der zu moderierenden Kommentare wäre also demnach trotzdem gering.

Grischa

Grischa Auf Twitter lesen: am :

Das stimmt. Ich habe das Bayes jetzt mal auf Moderation umgeschaltet.

Heute morgen gab es zwar die ersten 3 Botaufrufe, die den Honeypot umgangen haben, allerdings ist das im Verhältnis eine minimale Menge und ich vermute, dass diese die Seite noch in alter Version "im Cache" hatten und deshalb den Honeypot nicht sahen.

Eigentlich ist es ja sogar relativ egal, ob ich Bayes auf Moderation oder Löschen schalte: Ich kann in beiden Fällen den Kommentar restaurieren. Aber moderierte Kommentare kann ich auch mobil wieder frei schalten (über den Wordpress für Android Client). Somit schaue ich jetzt mal, ob sich der Moderationsaufwand zu sehr steigert durch diese Einstellung.

Grischa schrieb auch: Was tun nach Verlust des Android Geräts?

onli

onli am :

Jop, der Unterschied ist ja nur die Sichtbarkeit des Kommentars, und die Nutzerrückmeldung. Wobei man den Papierkorb natürlich auch ausschalten kann.

PS: Diese Promolink-Dropdown-Box erscheint bei mir zuerst nicht. FF 13.0.1, keine Fehlermeldung. Dann alles nochmal eingegeben, jetzt ist sie da.

onli schrieb auch: Spamblock-Bayes: Theoretische Grundlagen

Dirk Deimeke

Dirk Deimeke Auf Twitter lesen: am :

Ich habe jetzt die Bayes-Datenbank gelöscht und die Kommentare neu gelernt. Es sieht alles sehr gut aus mit dem Plugin!

Grischa

Grischa Auf Twitter lesen: am :

Das habe ich jetzt auch mal gemacht. Derzeit habe ich zwar keinen SPAM in der DB, den das Bayes lernen könnte, aber dafür ist die größte meiner DB Tabellen nun wieder schön klein und gut benutzbar.

Außerdem erreicht im Moment (Honeypot + HCaptcha) bei mir sowieso kein SPAM das Bayes. Mal weiter beobachten, wie sich das entwickelt.

Grischa schrieb auch: Das versteckte Captcha

Grischa

Grischa am :

Prima! Dann werde ich es heute Abend wohl endlich mal releasen!

Danke für Tests. :-)

Grischa

Grischa Auf Twitter lesen: am :

Interessante Erkenntnis im Zusammenhang mit dem "Versteckten Captcha": Bots, die den Honeypot mit Zahlen füllen, lassen das Captcha leer (tun es also genau verkehrt herum).

Der Grund muss tatsächlich sein, dass sie die Eingabefelder analysieren. Der Honeypot sieht wie eine Abfrage nach einer Telefonnummer aus, das Captcha wie ein Captcha. Somit versuchen sie es beim Honeypot mit Zahlen und ignorieren das Captcha (weil sie damit nichts anzufangen wissen).

Die Benennung des Honeypots ist also scheinbar wirklich wichtig!

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Dieses Blog erlaubt Dir, Audio Kommentare über audioboo.fm hinzuzufügen. Erstelle einen neuen Boo und gib hier den Link auf die Seite Deines Boos ein.
record
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
(Bedingung: 1 Kommentare geschrieben)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
tweetbackcheck