CAPTCHAs sollen im Internet sicherstellen, dass nur Menschen und keine programmierten Roboter (Bots) bestimmte Dienste nutzen können. CAPCHAs werden häufig für Formulare in Webseiten eingesetzt.
Das Prinzip für Captchas
CAPTCHA [sprich: käptschä] ist ein Akronym für Completely Automated Public Turing test to tell Computers and Humans Apart. Das bedeutet soviel wie „völlig automatissierter öffentlicher Turing-Test, um Computer und Menschen zu unterscheiden“.
Im Prinzip ist es ein Test, bei dem der Befragte eine Aufgabe lösen muss und das Ergebnis in ein Formularfeld einträgt. Die gestellten Aufgaben sind bei CAPTCHAs so formuliert, das ein Mensch sie leicht lösen kann, für Computer aber nur sehr schwer lösbar sind.
Es kann sich dabei um mathematische Aufgabenstellungen handeln oder um eine Texterkennung, wobei der Text durch Bildfilter verzerrt wird. Ein Computer muss Mustererkennungs-Algorithmen beherrschen, um derartige Darstellungen zu erkennen. Die sind in der Programmierung aufwändig und benötigen viel Rechnerzeit.
Nachteile:
2) ist nicht barrierefrei
3) ist möglicherweise zu schwierig und nur deutschspachig
Echte CAPCHAs
Echte CAPTCHAs werden bei jedem Zugangsversuch vollautomatisch per Zufallsgenerator generiert. Es wird also kein vorgegebener Fragenkatalog verwendet, damit es nicht zu häufigen Wiederholungen kommt. Das würde es den BOTs leichter machen.
1 mathematische CAPTCHAs
Bei mathematischen Fragestellungen würden z.B. bei einer Addition die verwendeten beiden Summanden per Zufallsgenerator ermittelt. Für das Beispiel 1) würde nicht mehr 4 und 7 in einer festen Vorgabe verwendet werden, sondern zwei zufällig ermittelte Zahlen.
Beispiele zu einfachen mathematischen CAPTCHAs werde ich ihnen anbieten. Dazu reicht es den CAPTCHA-Code nachträglich in ihr Formular (unmittelbar vor dem Sende-Button) einzufügen, ein Script im HEAD-Bereich zu notieren und die Prüfungsfunktion einzubinden.
Grafische CAPTCHAs können mit PHP-Scripts generiert werden. Code-Beispiele werden Sie im Web finden. Voraussetzung ist ein PHP-fähiger Server, eine auf den Server hochgeladene Font-Datei (copyright beachten) und eine zu verwendende Hintergundgrafik, die ebenfalls auf dem Server bereitgehalten werden muss.
Sie können stattdessen aber auch den (kostenlosen) Dienst eines externen Agebots nutzen. Solche Angebote werden Sie im Netz unter dem Suchbegriff 'captcha' finden.
Eine Alternative ohne PHP und externen Dienst wäre ein Semi-Captcha (ohne Zufallsgrafik) mit eingeschräktem Schutz. Keine Super-Lösung, aber mehr als nichts. Beispiele dazu werde ich ihnen anbieten.
Ganz nebenher: Offenbar suchen Bots bereits heute eine Lösung, die echten CAPTCHAs zu knacken. Das lohnt sich aber für ein einziges Formular auf einer Vereinsseite nicht. Höchstens zur Einbuchung kostenloser Emaildienste würde sich der Aufwand lohnen.
Graphische Semi-CAPTCHAs
Bei grafischen Semi-CAPTCHAs verwende ich feste Vorgaben, keine durch PHP hergestellte Grafiken. Das Funktionsprinzip ist einfach: Eine Grafik (oder eine Grafik aus einer vorgegebenen Sammlung) zeigt einen Text oder Ziffern, die der Nutzer in ein Feld eintragen soll. Stimmt die Eingabe nicht mit dem Vergleichswert überein, wird das Formular nicht abgeschickt.
Innerhalb einer Funktion steht die Anweisung zur Überprüfung des Captcha-Codes. Wird im Formular z.B. die Grafik 'captcha01.gif' eingebunden, welche die Keinbuchstaben 'abc' zeigt, wird die Eingabe 'abc' erwartet.
Bei der Prüfung wird der eingetragene Wert aus dem Formularfeld mit der ID 'antwort' entnommen und mit dem vorgegebenen Wert verglichen.
Beispielseiten zum Thema Graphische-Semi-CAPTCHAs werde ich demnächst veröffentlichen. Die Scripts lassen sich sehr einfach auch nachträglich in ihre vorhandenen Formulare einbauen. Ich denke dabei an zwei Varianten:
(Quelle Wikipedia)
Mit zunehmender Verbreitung von CAPTCHA-geschützten Webseiten wurden Lösungen entwickelt, um diesen Schutz zu umgehen. Viele Implementierungen sind mit relativ geringem Aufwand auch für Maschinen lösbar. Für verbreitete Implementierungen wie die in der Forumsoftware phpBB verwendete existieren bereits Spambots, die die CAPTCHAs lesen und damit diesen Schutz umgehen können. Ein weiteres Beispiel ist das Umgehen von CAPTCHAs durch Spammer beim automatischen Anlegen von Google-Mail-Konten mit einer Erkennungsrate von 20 bis 30 Prozent.
(Quelle Wikipedia)
Eine technisch einfache Möglichkeit, den CAPTCHA-Schutz zu umgehen, besteht darin, dass der Bot die eigentliche Erkennungsaufgabe an Menschen delegiert, alle anderen nötigen Schritte jedoch selbst durchführt. Ein Spammer richtete beispielsweise eine pornografische Website ein, um von den Besuchern dieser Website ein CAPTCHA lösen zu lassen, das aber eigentlich vom Anbieter eines E-Mail-Zugangs stammt. Unwissentlich lösten die Besucher der pornografischen Website für den Spammer die CAPTCHAs. Auch ein Trojaner, der ein Striptease-Programm vorgaukelt und CAPTCHAs durch den Anwender lösen lässt, ist bekannt geworden.
Verfahrensweise der Decodierung
Um ihnen das Prinzip der Decodierung zu erklären habe ich vier Grafiken erstellt, mit denen ich das an einem Beispiel erkläre. Die erste Grafik ist ein grafisches CAPTCHA, wie es von PHP-Scripts erzeugt und innerhalb eines Formulars angezeigt wird. Siehe rechts:
Die zweite Grafik zeigt einen Ausschnitt der ersten Grafik. Dort habe ich für zwei Pixel die Farbwerte eingetragen. Das hätte ich natürlich für alle vorkommenden Farben genauso einrichten können. Es reicht aber um klar darzustellen (wenn Sie mir glauben), das in den Pixeln zur Darstellung des Codes (in Blautönen) der Farbwert für Grün kleiner als 95 ist.
Wird nun jedes Pixel mit einen Grünwert von 95 und mehr ausgeblendet, steht der blaue Code auf neutralem Hintergrund.
Nach diesem Schema arbeiten die bösen Buben daran, CAPTCHAs zu entschlüsseln!
Fazit: Es ist immer vorteilhaft, die Ziffern in Farbnuancen darzustellen, die den Hintergrundfarbtönen verwandt sind. Umgekehrt: Achten Sie darauf, dass die verwendete Hintergrundgrafik zum Farbwert des Codes passt. Wie lange das noch hilft werden wir sehen.
Meine schwarze Seele würde den Bot ja mit der lateinischen Ausgangsschrift herausforden. Die vereinfachte Ausgangsschrift tuts aber auch. Soll er sich doch mit den deutschen Kringeln abmühen!
... und wenn Sie ausschießlich deutschsprachige Besucher erwarten können, gäbe es da noch die Möglichkeit deutsche Umlaute zu verwenden ...
Zuviel des Guten:
Nachdem das Gerücht umging, Bots hätten das Hotmail-CAPTCHA geknackt, ist der Code nun häufig kaum noch lesbar.