12 Stimmen

PHP Captcha ohne Sitzung

Ok, hier ist ein Problem: in dem Projekt, an dem ich arbeite, können wir nicht auf Server-seitige Sitzungen für jede Funktionalität verlassen.

Das Problem besteht darin, dass gängige Captcha-Lösungen zur Verhinderung von Roboterübermittlungen eine Sitzung erfordern, um die Zeichenfolge zu speichern, mit der das Captcha verglichen werden soll.

Die Frage ist: Gibt es eine Möglichkeit, das Problem zu lösen, ohne Sitzungen zu verwenden? Was mir in den Sinn kommt, ist ein verstecktes Formularfeld, das einen Hash enthält, zusammen mit einem Captcha-Eingabefeld zu verwenden, so dass der Server diese beiden Werte miteinander abgleichen kann. Aber wie können wir diese Methode sicher machen, so dass es nicht verwendet werden könnte, um Captcha leicht zu brechen.

2voto

Chad Brewbaker Punkte 2465

Automatisches Ausfüllen einer UUID des CAPTCHA zusammen mit der Benutzerantwort im POST. Kinderleicht.

2voto

Rizerzero Punkte 992

Mach einfach ein Mathe-Captcha ;) 2+90 = ? Gleichung sollte in einem Bild angezeigt werden und voila ;)

1voto

Rik Heywood Punkte 13598

Machen Sie Ihr verstecktes Eingabefeld zu einer Zufallsfolge. Speichern Sie diese Zufallsdaten in der Datenbank zusammen mit den Captcha-Informationen, damit Sie das richtige Captcha damit nachschlagen können.

Sie müssen auch eine kurze Zeitspanne für jedes generierte Captcha festlegen. Schließlich können Sie die Anzahl der Versuche für jedes Captcha in der Datenbank speichern und nachverfolgen und ein hartes Limit dafür festlegen (3 Versuche und es ist ein permanenter Fehlschlag).

1voto

IProblemFactory Punkte 9171

Meine eigene Idee, ich weiß nicht, ob sie gut ist:

1) Wenn der Benutzer eingeloggt ist, verwenden Sie einfach eine Hash-Funktion für sein Login und generieren damit ein CAPTCHA,

2) wenn es registrieren Form, etc nur Hash einige Wert aus Formularfeld (zum Beispiel Login, wenn Benutzer fertig geben Sie es) und durch Ajax zeigen CAPTCHA mit Hash von Login.

Ich hoffe, es ist verständlich :)

EDIT : Ohne AJAX: 2 Schritte zur Registrierung:

Bei 1 sammeln wir Login usw. Nach dem Absenden leiten wir weiter zu ?login=new_login

Bei 2 haben wir eine versteckte Eingabe mit GET["login"] und Hash von ihm in CAPTCHA Bild - nach dem Absenden haben wir alle zu überprüfen Antwort.

0voto

quillbreaker Punkte 6011

Können Sie ihnen als Antwort auf einen CAPTCHA-Aufruf ein Client-Zertifikat gewähren? Wenn sie dann dieses Zertifikat im Browser auswählen, wird es bei jedem Aufruf vom Client gesendet und kann für die Authentifizierung ohne Sitzungen und ohne weitere CAPTCHA-Aufrufe verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X