dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Variablen und Formulare

Hilft ein CAPTCHA gegen Formularspam?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

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:

  1. 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.
  2. Sie stellen auch für Menschen eine Hürde dar. Unter gewissen Umständen sogar eine unüberwindbare.
  3. Sie können unter anderem Vorwand an Menschen weitergereicht werden, welche diese dann gegen "Belohnung" lösen.
  4. 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:

    <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.

    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:

    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.

    3. Analyse des Surfverhaltens

    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.

    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:

    • klassisches Grafik-Captcha
    • Audio-Captcha
    • Inhaltsfiler statisch
    • Inhaltsfilter selbstlernend
    • Honeypot
    • Einfache Aufgaben
    • Mehrstufiges Formular
    • Aufenthaltsdauer

    Aus diesen verschiedenen Methoden sollten insbesondere bezüglich der Kriterien

    • 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

    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.

Hilft ein CAPTCHA gegen Formularspam?
http://www.php-faq.de/q-captcha-formularspam.html
 

dclp FAQ


Login