tkar.de Logo Weblog von Thomas Kleinhenz

Spamschutz mit ReCaptcha

Um menschliche Nutzer der interaktiven Komponenten einer Website von automatisierten Missbrauchsversuchen zu unterscheiden, stellt man eine kleine Zusatzaufgabe. Man fordert beispielsweise dazu auf, einen eingescannten Text zu entziffern.

Captcha-Beispiele Versuche, Menschen und Computer durch Tests zu unterscheiden, haben mit dem Akronym CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) im neudeutschen Technikslang eine Benennung gefunden. Normalerweise findet man Captchas im Web in Form kleiner Bilderrätsel, deren Lösung als Zeichenfolge in ein Formularfeld eingegeben werden müssen.

In aller Regel werden die Aufgaben speziell für diesen Zweck generiert, entweder mit geeigneten Tools und Funktionsbibliotheken vom eigenen Server oder per Webservice von einem externen Anbieter. Es handelt sich meist um Darstellungen von Buchstaben und Zahlen in unterschiedlichen Fonts, Größen, Farben und Neigungen, die zusätzlich durch Überlagerung mit anderen grafischen Elementen verschleiert werden. Seltener werden Rechenaufgaben oder Wissensfragen gestellt. Alternativ werden manchmal für visuell eingeschränkte Nutzer Höraufgaben angeboten.

Die Schutzwirkung ist unterschiedlich, da die Qualität der Aufgaben dem rasanten Fortschritt auf dem Gebiet der rechnergestützten Bild-, Sprach- und Texterkennung nicht immer Rechnung trägt. Die Aufgabe muss so gestaltet sein, dass sie für Menschen lösbar ist und zugleich für Maschinen unlösbar ist ... und möglichst lange bleibt. Idealerweise verwendet man "Material", von dem man weiß, dass es der maschinellen Entschlüsselung widerstanden hat.

An diesem Punkt setzt der Webservice reCaptcha der Carnegie Mellon University an, der mittlerweile von Google aufgekauft wurde. Er bietet Text- und Spracherkennungsaufgaben, an denen moderne OCR- und Audio-Erkennungssysteme bei der Digitalisierung von Büchern, Zeitschriften und Rundfunksendungen gescheitert sind. Man bekommt also Captchas von guter Qualität und liefert im Gegenzug durch die Benutzereingaben Beiträge zur Komplettierung der Digitalisierungsprojekte. Aber wie kann der Service entscheiden, ob die Aufgabe richtig gelöst wurde? Ganz einfach: Es werden immer zwei Wörter angezeigt, von denen eines bereits bekannt ist. Um den Test zu bestehen, muss das bekannte Wort richtig erkannt werden. Der Lösungsvorschlag für das neue Wort jedoch fließt in eine statistische Berechnung ein, die irgendwann eine gesicherte Lesart für dieses Wort nachweist.

Die Einbindung von reCaptcha erfolgt über Javascript bzw. im <noscript>-Tag in einem iFrame. Es ist zu überlegen, ob man den <noscript>-Teil nicht völlig weglassen kann, um einen zusätzlichen Schutz vor automatisierten Zugriffen zu erreichen, da viele Spambots nicht oder nur rudimentär mit clientseitigen Scripten zurecht kommen. Die Darstellung der Captcha-Abfrage ist nur bei Einbindung über Javascript konfigurierbar, die API ist gut dokumentiert. Sinnvollerweise verwendet man die Bibliothek mit dem AJAX-API, die ein leicht zu handhabendes Javascript-Objekt bereitstellt, das über die create-Funktion konfiguriert und direkt ausgegeben werden kann.

<script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
Recaptcha.create(
    "<api_key>",
    "recaptcha_div", {
        theme: "white",
        lang: "de",
        ...
        callback: Recaptcha.focus_response_field
    }
);
</script>

Und hier kann man nach Herzenslust mit diesem Captcha spielen:

Wird der Schutzmechanismus nur selten benötigt, genügt es, ihn erst bei Bedarf per AJAX zu laden. Ein Beispiel findet man auf meiner Kontaktseite: Der vermeintliche E-Mail-Link dient nur als Trigger für das Laden des Captchas. Erst wenn dieses gelöst wurde, wird die E-Mail-Adresse angezeigt.

Mit Mailhide bietet ReCaptcha einen eigenen Service zum Schutz von E-Mail-Adressen an. Auch hier wird die Lösung eines Captchas gefordert, bevor die E-Mail-Adresse angezeigt wird. Leider gibt es bei Mailhide noch keine Möglichkeit, das Layout individuell anzupassen. Außerdem läuft der Service immer in einem eigenen Fenster, lässt sich also nur bedingt in eigene Seiten integrieren. Und es wird Vertrauen vorausgesetzt, denn die zu schützenden E-Mail-Adressen müssen beim Anbieter hinterlegt werden.

22.02.2010 · Permalink

Feed abonnieren