duckduckgo
This connection is encrypted with SSL

tags: news software deutsch opensource webdesign howto


20.Oct.2014 15:53 - zuletzt aktualisiert: 27.Sep.2015 23:35

Simpelster Spam Schutz durch tiefenpsychologische Botabwehr - Alternative für Captchas: Honeypots

Dieser Titel ist zugegebenermaßen mächtig übertrieben, aber er unterstreicht einen wichtigen Punkt dieses Ansatzes: die "Psychologie" des Spambots.

Ich bin nicht der Urheber dieser genialen Idee, ich kann leider den entsprechenden Blogeintrag nicht mehr wiederfinden in den Tiefen des Netzes. Gebt mir gerne einen Kommentar mit dem Link, dann werde ich ihn einfügen!


Wie wir alle wissen, ist die Intelligenz eines jeden Bots in etwa gegen Null. Man kann das wahrscheinlich auf folgende Logik begrenzen:
Gibt es ein Eingabefeld für Text (<textarea>)?
Ja -> vollspammen! Nein -> Pech gehabt.

Gibt es ein Eingabefeld für email?
Ja -> vollspammen! Nein -> Pech gehabt.

Das kann man sich nun sehr gut zunutze machen, ohne irgendwelche Captchas und solcherlei Kinkerlitzchen. Das geht z.Bsp. wie folgt:

Wir gehen davon aus, daß keine Emailadresse erhoben werden MUSS. Im Sinne der Datensparsamkeit ist dies für übliche Kommentare in z.Bsp. Blogs absolut überflüssig.

Wir nehmen ein typisches Eingabeformular mit den Feldern Name, Website und Kommentar. Das sieht dann so aus:

<form action="comment.php">
    <input type="text" name="name">
    <input type="text" name="website">
    <textarea name="comment"></textarea>
    <input type="submit" value="submit">
</form>

Nichts besonderes soweit! Die Idee, auf der das Ganze beruht, macht sich die dumme Eigenschaft der Bots zugute: Kein Spambot kann der Versuchung widerstehen, in ein existierendes Email-Feld etwas hineinzuschreiben! Wenn wir also folgende Zeile in unser Formular einfügen, und das vor dem User verstecken, dann braucht man nur noch im auswertenden Skript (in unserem Falle comment.php), die Anweisung abzusetzen, falls das email-Feld nicht leer ist, bearbeite diesen Post als Spam!

Im Klartext bedeutet das, daß wir innerhalb des Formular-Blocks folgende Zeile einfügen:

Genau das wäre dann der "Honigtopf".


    <input type="text" name="email" style="display: none;">

Unser Formularblock sollte am Ende in etwa so aussehen:

<form action="comment.php">
    <input type="text" name="name">
    <input type="text" name="website">
    <input type="text" name="email" style="display: none;">
    <textarea name="comment"></textarea>
    <input type="submit" value="submit">
</form>

Von nun an kann man bequem im php oder wie auch immer man diesen Post auswertet, solche Posts getrost als Spam ansehen. In meinem Blog bekomme ich eine email, mit dem Inhalt des Posts, für den unwahrscheinlichen Fall, daß sich jemand den Blog mit Lynx ansieht, dort wird das Feld nämlich trotzdem angezeigt. In diesem Falle kann ich selbst den Kommentar händisch nachtragen...

Anschauen kann man sich das Ganze hier ganz unten! Mein Kommentarfeld funktioniert nach eben diesem Prinzip.

Ich hoffe, daß das hier dem einen oder anderen Admin einen Haufen Zeit erspart, so wie es mir jede Menge Zeit erspart hat. Komisch, daß ich den Blog nicht wieder finde... Allerdings tu ich mich auch schwer mit den Suchmaschinen - die spucken bei mir immer jede Menge Unfug aus, nach dem ich gar nicht suche... :-/ Aber das ist wohl ein anderes Thema...



Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer
Creative Commons Namensnennung 4.0 International Lizenz .

Kommentare

1) Sebastian

21.Oct.2014 08:23

Man bezeichnet diese Fallen für Schadsoftware allgemein als Honeypots. Unter dem Stichpunkt kann man entsprechend viel zum Thema finden. Ich selbst hatte darüber auch schon mal gebloggt: https://sgaul.de/2012/03/16/spam-schutz-durch-honeypots

2) chris_blues

21.Oct.2014 12:14

Hallo Sebastian!
Danke für das Stichwort und den Link! Da finden sich ja auch noch interessante Kommentare. Als Beweis fürs Konzept haben sich so schon zuverlässig einige Bots verraten. Auch wenn display: none; direkt im Feld steht. So genau scheinen die Bots nicht hinzusehen. Aber das display: none; in eine externe CSS zu legen macht durchaus Sinn. Ich werd auch gleich mal noch den Hinweis hinzufügen, dieses Feld nicht auszufüllen. Falls mal jemand kommen sollte, der sich das Ganze vorlesen läßt. Ich weiß nun nicht so genau, wie das funktioniert, mit den Readern, aber um die Gefahr zu minimieren, finde ich das sehr sinnvoll...
Und... es soll ja doch auch noch Leute geben, die Lynx nutzen. :)

3) Martin

22.Oct.2014 18:00

Was allgemein zur Abwehr von Spam hilft: Eigenkreationen.

Diverse WordPress-Plugins nutzen die von dir beschriebene Technik und trotzdem ist das nicht wirklich effektiv zur Abwehr von Spam [citation needed]. Natürlich sind "Bots" in der Lage, CSS zu evaluieren. Bots können sogar JavaScript evaluieren. Die meisten tun es allerdings nicht und es ist viel lohnender (meiner Meinung nach), einen spezifischen Bot für ein bestimmtes Kommentarsystem zu schreiben als einen generischen "FILL IN ALL THE FIELDS" Bot zu nutzen.

Der Grund, warum Du kein Spam bekommst ist schlicht, dass Du eine eigene, unbekannte Software verwendest. Gleiches gilt übrigens für mein Kommentarsystem "Isso", dass ebenfalls seit über einem Jahr spamfrei ist. Nicht weil es besonders viel wert auf Spamabwehr legt, sondern weil es einfach keine (oder nur sehr, sehr wenige) Bots gibt, die JS/HTML/CSS evaluieren.

Das wird vermutlich nicht immer so bleiben.

4) chris_blues

23.Oct.2014 13:33

Hallo Martin!
Das vermute ich leider auch, daß irgendwann die Bots fähiger werden. Dann müssen natürlich andere Maßnahmen her. Aber solang es funzt, kommt mir das sehr gelegen. :)
------------------------
Wecke nicht den Wolf! Seit ich diesen Artikel veröffentlicht habe, bekam ich das erste Mal verstärkt Spams, die sich allerdings bis jetzt alle selbst verraten haben. Immer nur auf diesen Artikel hier und Tendenz steigend. Am ersten Tag waren es noch 3 Versuche, nun (3 Tage später) kommen sie schon jede Stunde! Da ich ja die .htaccess Blacklist von http://perishablepress.com/ nutze, werde ich nun die zum Spam dazugehörigen IPs auswerten. Mal sehen, ob sich da ein Muster findet, so daß ich die IPs direkt blockieren könnte.

Spannend!

5) chris_blues

24.Oct.2014 21:11

Hier kann man mal die Statistik sehen für die digitalen Klinkenputzer:
https://musicchris.de/blog/checkips.php

Kommentar verfassen








😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🤐🤑🤒🤓🤔🤕🤖🤗🤘🤠🤡🤢🤣🤤🤥🤦🤧𝄞🌍🌹🍻🍾

Datenschutzerklärung

Ihre IP-Adresse, Browserinformation (useragent-string) etc werden von dieser Blogsoftware nicht gespeichert. Trotzdem könnte es sein, daß der Betreiber dieser Webseite solche Daten von Ihnen speichert. Das ist allerdings außerhalb der Reichweite dieser Blogsoftware. Bitte sehen Sie sich die Datenschutzerklärung der Webseite an um mehr darüber zu erfahren!

Diese Blogsoftware speichert generell keine Daten von Ihnen. Nur falls Sie einen Kommentar hinterlassen, müssen ein paar Daten gespeichert werden. Sie brauchen hier keine persönlichen Daten angeben. Abgesehen vom Kommentar selbst sind alle anderen Angaben freiwillig!
Es ist vollkommen in Ordnung falls Sie ihren Namen nicht angeben wollen, ihr Kommentar wird dann als 'anonym' angezeigt werden.
Falls Sie Benachrichtigungen erhalten wollen, wenn hier neue Kommentare erscheinen, dann brauchen wir dazu natürlich Ihre Emailadresse. Diese wird sicher gespeichert und nicht weitergegeben. Falls Sie nicht benachrichtigt werden wollen, lassen Sie das Feld Benachrichtigungen einfach leer.
Falls Sie Ihre Webseite mit Ihrem Namen verknüpfen wollen, brauchen wir natürlich Ihre Webadresse. Ansonsten kann auch dieses Feld leer bleiben.

Falls Sie einen Kommentar hinterlassen wollen werden folgende Daten gespeichert werden:

  • Zeit und Datum Ihres Kommentars
  • Ihr Name (falls angegeben)
  • Ihre Emailadresse (falls angegeben)
  • Ihre Webseite (falls angegeben)
  • Ihr Kommentar
  • einige technische Informationen, die mit Ihnen nichts zu tun haben, z.Bsp. zu welchem Blogartikel Ihr Kommentar gehört und eine eindeutige ID für Ihren Kommentar