Webformulare werden oft von Bots zum Spammen missbraucht. Mittels Captchas versucht man, Bots zu erkennen. Oft sind andere Methoden allerdings sinnvoller.
CAPTCHAs
CAPTCHA ist die Abkürzung für "Completely Automated Public Turing test to tell Computers and Humans Apart". Man versucht also den Benutzer des Formulars vor zusätzliche Probleme zu stellen, welcher ein Mensch lösen kann, ein Bot/Programm allerdings nicht. In der Regel passiert das mittels Darstellung von verfremdeten Zahlen und Buchstaben in Grafiken, welche die Benutzer erkennen und eintragen müssen.
CAPTCHAs sind ein Mittel gegen offene, gezielte Angriff auf eine Website mittels Bots. Sie haben allerdings auch Nachteile:
- Die Bots werden immer weiter entwickelt und es besteht ständiger Bedarf an Verbesserungen um zu verhindern, dass die CATPCHAs auch von Bots gelöst werden können.
- Sie stellen auch für Menschen eine Hürde dar. Unter gewissen Umständen sogar eine unüberwindbare.
- Sie können unter anderem Vorwand an Menschen weitergereicht werden, welche diese dann gegen "Belohnung" lösen.
- <a href
- Bei einem klassischen Kontaktformular besteht i.d.R. keine Notwendigkeit für HTML-Eingaben.
- BCC:
- From:
Mime-Part:
..etc.
Mail-Header haben in Kommentaren zu einer Website nichts zu suchen - Viagra
- Nach Belieben können Wörter aus dem Wortschatz der Spammer zu einer Nichtannahme führen.
- Automatisch Filter
- Hier können z.B. auch selbstlernende Filter verwendet werden.
- Honeypot
- Verwendung eines Feldes, in das nichts eingetragen werden darf. Dieses Feld sollte z.B. per CSS vor Besuchern verborgen werden. Spammer füllen i.d.R. alle Felder aus. Wenn das Feld ausgefüllt ist, dann kann man davon ausgehen, dass dies ein Bot gemacht hat.
- Einfache Aufgaben
- Lösung einfacher Aufgaben in Textform (z.B. Hauptstadt von Deutschland, 1+1, etc) vom Besucher verlangen und die Lösung überprüfen. Alternativ kann man auch vom Benutzer verlangen vor dem Absenden erst noch die Zeichenkette "Ja" in ein Feld einzugeben.
- Mehrstufiges Formular
- Vom Benutzer das Aufrufen mehrerer Seiten verlangen. Man kann z.B. beim Aufruf des Formulars eine Session starten und beim Senden deren Existenz überprüfen. Auch eine Bestätigungsseite nach dem Ausfüllen des eigentlichen Formulars ist denkbar. Erst diese weitere Bestätigung führt die Aktion erst wirklich aus.
- Messen der Aufenthaltsdauer auf der Website
- Ein Mensch wird in der Regel wesentlich länger zum Ausfüllen eines Formulars benötigen als ein Programm.
- klassisches Grafik-Captcha
- Audio-Captcha
- Inhaltsfiler statisch
- Inhaltsfilter selbstlernend
- Honeypot
- Einfache Aufgaben
- Mehrstufiges Formular
- Aufenthaltsdauer
- Verlangt bestimmte Browsereinstellungen
- Verlangt zusätzliche Aktion vom Benutzer
- Könnte bestimmte Inhalte nicht-übermittelbar machen (z.B. Apotheken-Bestellung mit Viagra als Wort auf der Blacklist)
- zugänglich für Blinde/Farbenblinde
- zugänglich für Taube
- zugänglich mit Textbrowsern
- Aufwand der Implementation
- verbraucht Rechenzeit
- Umstand/Usabilty für den normalen Benutzer
- Wirksamkeit gegen üblichen Formularspam
- Wirksamkeit gegen gezielte Angriffe
Alternative Abwehrmaßnahmen gegen ungezielte Angriffe
Gerade kleinere, unbekanntere Websites werden eher Opfer von Angriffen freilaufender Bots, welche versuchen relativ ungezielt Spam und Malware loszuwerden. Die Bots sind hier vergleichsweise dumm und nicht auf die Website speziell angepasst. Somit wirken einfachere Gegenmittel. Diese haben auch den Vorteil, das die Benutzer der Seite weniger belästigt werden.
Solche Methoden (außer klassische Captchas), mit denen Formularspam wirksam eingedämmt werden kann sind:
1. Überprüfung der übermittelten Formularinhalte
Überprüfung auf Versuche, das Formular zu missbrauchen. Erkennt man aufgrund von bestimmten Zeichenketten einen Bot, so kann man eine Fehlermeldung ausgeben statt die eigentlich geplante Aktion auszuführen. Möglichkeiten für diese Zeichenketten sind zum Beispiel:
2. Verwendung eines "Light-Captchas"
Wenn die Website vor dem Angriff nicht von einem Menschen geprüft worden ist und der Bot nicht auf die Website optimiert ist, dann genügen oft relativ einfache Mittel um einen Bot zu erkennen:
3. Analyse des Surfverhaltens
All diese Methoden versuchen nach der Methode "Security by Obscurity" den Angriffen der Bots aus dem Wege zu gehen. Sie sind in Handling und Benutzbarkeit den Captchas überlegen und für den größten Teil aller Websites geeignet, können aber keine gezielten Angriffe abwehren.
Zusammenfassung
Es gibt viele Methoden, Formularspam zu vermeiden:
Aus diesen verschiedenen Methoden sollten insbesondere bezüglich der Kriterien
und der persönlichen Einschätzung des Gefahrenpotentials die geeigneten ausgesucht werden.
Weitere Informationen
Auf heise Developer wurde der Artikel Das Ende der Bild-Captchas veröffentlicht, der sich ausführlich mit diesem Thema auseinandersetzt.






