wie handelt ihr den Umgang damit?
„Dank“ OCR’s sind ja Captchas auch überflüssig geworden, außer
man macht den Captcha so schwer das es vom Usability-Aspekt
nur noch nervt, da man zu viele Versuche braucht.
Es gibt Captchas, wo man eine kleine Rechenaufgabe lösen muss, da steht im Bild dann 12+7 und du musst in das Feld das Ergebnis eintragen. Die reine Texterkennung reicht nicht, der Bot müsste das gelesene auch interpretieren. Dadurch kann man folglich das Bild gut lesbar machen für den Menschen oder es ganz in normalem Text umsetzen.
Das klappt in der Praxis mäßig gut, da die Benutzer erst eine kleine Anleitung lesen müssen, auch wenn sie nur „Tragen Sie das Ergebnis von 12 + 7 hier ein:“ ist. Aber es ist allemal besser als das von dir beschriebene Pixelgewirr.
Wenn man diesem Prinzip folgt, dann kann man da beliebig die Fantasie spielen lassen:
Beispiel: Du hast ein Feld Name und in dein Captcha-Feld soll der Benutzer den ersten und den letzten Buchstaben seines Namen eintragen.
Oder: Du schreibst einen Satz hin und forderst deinen Benutzer auf, das zweite Wort des Satzes abzutippen.
Also alles Aufgaben, wo man den Sinn einer Aufforderung verstehen muss, nicht nur den bloßen Text. Ich denke, damit hast du lange Zeit Ruhe.
Solange Bot’s kein CSS lesen können, kann man mit display:none
ein Feld eintragen welches Serverseitig auf empty abgefragt
wird,
Finde ich jetzt auch nicht glücklich, woher weißt du denn ob die Bots nicht CSS können? Ist ja nun nicht so eine Kunst. Und selbst wenn sie es JETZT nicht können, vielleicht können sie es in einem halben Jahr, dann brauchst du wieder eine neue Lösung.
Das gleiche gilt für alle Lösungen mit JS. Du weißt nicht, ob ein Bot kein JS kann.
eine hidden Feld mit time() finde ich nicht hilfreich,
da wenn ich so einen Bot programmieren würde, immer einen
Menschen simulieren würde (Zeiteingaben).
Das könnte man unterstützend machen, aber wozu brauchst du dann ein Feld? Dann speicher einfach beim Aufruf des Formulars einen Sessioncookie und speichere dir zu der Session die Aufrufzeit. Und jetzt akzeptierst du das Formular erst, wenn 1min vergangen ist, ansonsten forderst du halt doch zur Eingabe eines Captchas an.
Oder wenn du keine Cookies willst, dann erzeugst du halt die SessionID in ein hidden-Feld, was mit dem Formular übertragen wird. Damit kannst du dann serverseitig wieder alle Prüfungen machen, die dir so einfallen.
Wenn du das rein serverseitig machst, dann hat der Bot keine Chance von den Namen und Inhalten der Inputfelder auf die durchgeführten Prüfungen zu schließen.
Denn wenn es ein hidden Textfeld gibt mit Namen „FormLoad“ und dem Inhalt „2015-04-23 08:12:15“, dann könnte der kluge Bot eventuell mit einer zeitlichen Verzögerung reagieren.
Wenn du aber ein Sessioncookie hast oder ein hidden Textfeld „SessionID“ mit dem Inhalt „Jdne9asN294Ndl32mf02h4“, dann kann der Bot nur sehr schlecht raten, ob du eine zeitliche Prüfung oder sonsteine Prüfung machst.
MfG. Robert
P.S: Bitte das Plural S nicht mit Apostroph wegtrennen, das ist unnötig und schlicht falsch. Also statt OCR’s bitte OCRs.
http://idiotenapostroph.de.vu/