Wäre es möglich ein einfaches Captcha ohne Cookies/Session umzusetzen?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Verstehe ich das so richtig?:

Zufallserzeugung von nem string (captcha), Verschlüsselung mit deinem passwort,hash des verschlüsseltem captcha strings, der verschlüsselte captcha string wird in ein hidden feld gepackt und der originale als image. Der Besucher gibt dann das was er sieht in eine textbox und der server verschlüsselt das mit dem statischen schlüssel und hasht das wieder und prüft dann das mit dem aus dem hidden feld gesendeten string?

Möglich aber die verschlüsselung kannst du dir sparen, der hash ist eh nen einmal Verfahren. Was aber bei deinem system fehlt ist die manipulationssicherheit. Einmal kurz ne anfrage von hand machen, die header "notieren" und dem bot sagen was er im hidden feld anstatt deinen gesetzten wert nehmen soll und was er in der "textbox" senden soll wo der captcha in plain rein soll. Kurz gesagt: der schlüssel würde sich unendlich mal benutzen lassen und dein schutz ist uneffektiv.. abhilfe zb mit der Kombination mit sql und der begrenzung des captchacodes auf einmalige verwendung


Kieselsaeure  05.11.2016, 17:41

gern. wenn sich tatsächlich einer so gedanken macht bin ich auch bereit etwas ausführlicher zu helfen. :D

Kieselsaeure  05.11.2016, 10:28

achja und wenn du sessions verwenden würdest könnte man übrigens das was aktuell im hidden feld steht nichtmehr effektiv verändern. man authentifiziert sich am server via cookie das dann die daten auf dem dateisystem des server liest und in den Daten stehen die "sessionwerte" vom jeweiligen client.

klugshicer 
Beitragsersteller
 05.11.2016, 17:27
@Kieselsaeure

Vielen Dank, soweit hatte ich noch gar nicht gedacht - damit hast Du mir die entscheidende Schwachstelle in meinem "Captcha-Konzept" aufgezeigt.

Der Lösung von https://www.webappz.de/captcha verwendet ein Verfahren, was so ähnlich funktioniert wie ihr das oben beschrieben habt. Für nicht kommerizelle Webseiten ist das sogar kostenlos verfügbar.

Ich habe mir was ähnliches auch schon programmiert.

Das Skript erzeugt einen Hash, gibt ihn so wie Du es beschrieben hast in einem hidden field aus. Den Hash speichere ich gleichzeitig in einer $_SESSION Variable. Das Empfänger-Skript vergleicht die $_POST und die $_SESSION Variable. Wenn identisch dann gut :)

Das funktioniert aber unabhängig vom Captcha. Und meiner Meinung nach ist das ausreichend.

Ein Captcha ohne Cookie / Session halte ich für nicht realisierbar


Ich hab sowas ähnliches mal gemacht, indem ich eine sich jedesmal ändernde Rechenaufgabe stellte, an das Ergebnis kam noch ein Wort, und das dann mit MD5 verschlüsselt. Das kam in ein hidden-Feld zum Vergleich mit der Nutzer-Eingabe. Die Aufgabe wurde jedesmal zur Anzeige/Lösung mit PHP in ein Bild umgewandelt und mit Timestamp gespeichert. Hat wunderbar funktioniert, kein Spam oder Angriffsversuche mehr im Gästebuch.