Der Stammleser weiß ja um die Captchas mit der dummen Frage. Aus einer Reihe von Gründen ist eine Frage zum Beispiel nach dem Vornamen von Franz Beckenbauer besser als die meisten anderen Methoden. Im Vergleich zum Ablesen von verzerrten Wörtern aus Bildern oder dem Ausrechnen von Matheaufgaben profitiert die Usability und anders als bei automatischen Systemen gibt es keine false positives. Spambots bleiben in jedem Fall außen vor.
Der Haken an der Sache ist im Vergleich zu den automatischen Lösungen, dass immer noch ein zusätzliches Textfeld ausgefüllt werden muss. Diesen Haken kann man aber mit etwas Javascript auch aus der Welt schaffen:
var el = document.getElementById('antispam-input'); el.value = 'Franz'; el.style.display = 'none';
Das Formular-Element (in diesem Fall mit der ID antispam-input) wird automatisch ausgefüllt und danach ausgeblendet. Wer kein Javascript aktiviert hat, muss da eben von selbst die Antwort eintragen, aber 95% der Surfer kriegen vom Spamschutz nichts mehr mit. Und wasserfest sowie im Notfall einfach manuell zu lösen ist er trotzdem.
Spambots haben kein Javascript und deswegen ist das automatische ausfüllen völlig unproblematisch. Nur sollte man eventuell neben dem Input selbst auch eventuell vorhandene/umschließende Labels oder Absätze ausblenden.
Hier noch eben schnell die Mootools-Variante des obrigen Codes:
var el = $('antispam-input'); el.set('value', 'Franz'); el.setStyle('display', 'none');
Niemand sollte Captchas sehen oder sich der Gefahr aussetzen müssen, versehentlich von einem dummen Script als Spammer einsortiert zu werden!
Kommentare (16)
Dan ¶
14. Oktober 2008, 22:12 Uhr
Diese Idee würde ich glatt als kleine Inovation einordnen.
Die einfachsten Dinge sind oft die besten - noch - bis Spambots mit Javascript spielen lernen - selbst wenn es nur Trial'n'Error wäre.
Dan ¶
14. Oktober 2008, 22:21 Uhr
»Nachtrag«: Auf einer meiner Websites habe ich bei einem Kontaktformular (welches bei Bots sehr beliebt war) die »name«-Angaben umgedreht.
Beispiel (input; name="lmaie" statt "email"):
[...] type="text" name="lmaie" id="lmaie" [...]
Aufgrund der Tatsache das die Spambots bist heute nicht wissen, dass "lmaie" auf E-Mail Adressen überprüft wird, haben die Bots in der Regel das Feld freigelassen oder es mit wirren Zeichenfolgen gefüllt.
Ob das nun »schöner« Code ist oder nicht, ist wieder eine andere Sache (Mich stört es nicht). Auf alle Fälle ist es eine schnelle und billige Lösung.
erlehmann ¶
14. Oktober 2008, 23:12 Uhr
Zitat Dan:
Und eine, die nicht barrierefrei ist, es sei denn, du nutzt korrekte Labels.
Markus Thömmes ¶
15. Oktober 2008, 03:03 Uhr
Hi Peter,
habe da mal ne Frage: Bei dem Post, in dem du die Spamschutzvariante vorgestellt hast gibt es einen Beitrag der eine andere Variante aufführt:
Man macht einfach ein weiteres Formularfeld, lässt es per CSS ausblenden und jeder Spambot füllt es mit aus.
Ist diese Variante nichtmehr sicher, denn sie ist viel einfacher umzusetzen.
Moritz Gießmann ¶
15. Oktober 2008, 04:57 Uhr
Eine Innovation ist es nicht, denn für Wordpress gibt es ein Plugin, dass nach dem gleichen System funktioniert. http://wordpress.org/extend/plugins/jsspamblock/
Beat ¶
15. Oktober 2008, 07:10 Uhr
Von welchem Feld sprecht ihr überhaupt? Ich sehe hier nirgends ein Anti-Spam-Feld...
Ha! Ein guter Scherz, oder?
Doch nun zu meiner ernsthaften Frage: Ist es wirklich so, dass keiner dieser Hightech-Bots auch nur ein klein wenig JavaScript kann? Das kann ich fast nicht glauben.
Mit der Firefox-Extension "Web Developer" kann man sich ja sehr leicht eine "Generated Source" anzeigen lassen. Und wenn dies bereits der "Web Developer" kann, dann können dies sicher auch einige Bots, oder?
Moritz ¶
15. Oktober 2008, 07:49 Uhr
Soweit ich weiß können die Bots absichtlich kein Javascript um den Javascript Validierungen von Formularen zu entgehen.
Peter ¶
15. Oktober 2008, 09:46 Uhr
Ich denke eher, das sind so simple Programme, dass ein JS-Interpreter unnötiger Ballast wäre durch den man nichts gewinnt.
Siegfried ¶
15. Oktober 2008, 10:37 Uhr
Whow!
jedenfalls ein guter Ansatz. Allerdings habe ich auch so meine Zweifel, ob Spambots nicht inzwischen doch Javascript können.
Prinzipiell halte ich die Idee von Markus Thömmes für besser, da sie ohne Javascript auskommt. Ich hatte schon mal einen ähnlichen Gedanken irgendwo vorgestellt. Etwa so, ein typisches aber leicht zu lösendes Captcha einzubauen, dieses per css zu verstecken, dazu einen mitversteckten Hinweis, dieses Captcha _nicht_ zu lösen, fertig. Wer's dennoch tut, ist wahrscheinlich ein Bot. Könnte man auch gut mit dem "dumme-Frage-Captcha" so machen.
Peter ¶
15. Oktober 2008, 10:48 Uhr
Zitat Siegfried:
Ich schreibe doch hier nichts, was nicht gründlich unter Gefechtsbedingungen getestet worden wäre! Ein dickes Problem bei den umbenannten Inputs wäre, dass das bei Fertiglösungen wie Wordpress nicht gerade einfach einzubauen ist.
Jan Theofel ¶
15. Oktober 2008, 10:53 Uhr
Das Problem an dem automatischen Ausfüllen ist der Umstand, dass es sich aber einer gewissen Verbreitung für Spammer lohnen wird, diese auch zu erkennen. Spätestens wenn sich der erste derartige Spammer in die eigene Seite verbissen hat muss man die Abfrage ändern und kann sie nicht mehr automatisch ausfüllen. Bis es soweit ist, ist es eine schöne Lösung.
PS: Punkt 2 aus der Liste unter "Kommentar abschicken" solltest du dann konsequenter Weise auch ausblenden.
Bartek ¶
15. Oktober 2008, 11:01 Uhr
Alles besser als Captchas ;)
Peter ¶
15. Oktober 2008, 11:02 Uhr
Zitat Jan Theofel:
Wenn es so weit kommt, dass ein Spammer sein Tool extra auf ein bestimmte Seite einschießt, hat man ohnehin verloren. Dann werden auch Rechenaufgaben geknackt und OCR für grafische Captchas benutzt.
Das ist allerdings wahr, mache ich nacher.
Jan Theofel ¶
15. Oktober 2008, 12:20 Uhr
Zitat Peter:
Das war etwas undeutlich von mir formuliert. Ich gehe davon aus, dass es in absehbarer Zeit Bots geben wird, die den JavaScript-Code zwar nicht ausführen aber selbständig parsen und versuchen "nachzumachen". Sprich die sehen, dass der Code ein nicht sichtbares Feld ausfüllt oder ähnliches und machen das dann eben auch.
Wenn sich dann so ein Bot über deine Seite stolpert und deinen JavaScript-Code richtig interpretiert, dann musst du das Feld komplet ggf. komplett umbauen.
Peter ¶
15. Oktober 2008, 12:30 Uhr
Zitat Jan Theofel:
Ah, verstehe. Gibt es da einen konkreten Anlass für diesen Verdacht? Ich bin ja nun kein Fachmann auf dem Spam-Sektor, aber ich stelle mir das immer noch recht „unwirtschaftlich“ vor, selbst wenn wir es mit keinem vollwertigen Interpreter zu tun haben. Da ginge dann doch zumindest Zeit für das Donwloaden externer JS-Files drauf – in der Zeit könnte man woanders vielleicht drei weitere Spam-Messages posten.
Blogcopter ¶
15. Oktober 2008, 14:02 Uhr
Zitat erlehmann:
Das hoffe ich doch, dass ich korrekte Labels nutze.
In wie weit ist diese Lösung nicht barrierefrei, sofern die Labels nicht korrekt gesetzt sind?