Zum Hauptinhalt springen
Friendly Captcha schützt Formulare vor automatisiertem Missbrauch, ohne dem Besucher eine Aufgabe zu stellen. Der Browser löst im Hintergrund ein Rechenrätsel und legt die Lösung in ein verstecktes Feld des Formulars. Beim Absenden prüft WEBSALE V8s diese Lösung beim Friendly-Captcha-Dienst nach. Im Template brauchen Sie dafür drei Dinge: das Widget, das die Lösung erzeugt, die Auslösung der Prüfung, und die Auswertung des Ergebnisses. Für jeden dieser Schritte gibt es Tags. Zugangsdaten und Adressen des Dienstes stehen in der Shopkonfiguration. Von den vier hinterlegten Werten geben nur zwei Tags aus, nämlich die öffentlichen. Der API-Schlüssel und die Prüfadresse bleiben serverseitig und haben bewusst kein Tag. Wegweiser: Spamschutz für Formulare · Referenz: Shopkonfiguration shop.config

Das Widget einbinden

Zwei Einzel-Tags liefern die Werte, die das Friendly-Captcha-Skript im Browser benötigt.
Das Widget gehört innerhalb des form-Elements. Es schreibt seine Lösung in ein verstecktes Feld mit dem Namen frc-captcha-solution, und genau dieses Feld liest WEBSALE V8s beim Absenden aus. Steht das Widget außerhalb des Formulars, wird das Feld nicht mitgeschickt, und die Prüfung schlägt mit dem Code 200 fehl.
Beide Tags arbeiten auch als Klammerung. Sie greifen, wenn der jeweilige Wert in der Shopkonfiguration hinterlegt ist. So blenden Sie das Widget nur dort ein, wo Friendly Captcha tatsächlich eingerichtet ist:

Die Prüfung auslösen

Zwei Klammerungen lösen die Prüfung aus und zeigen ihren Bereich, wenn sie bestanden wurde.
Diese beiden Tags fragen kein Ergebnis ab, sie führen die Prüfung durch. Jedes von ihnen löst beim ersten Auswerten auf einer Seite eine Anfrage an den Friendly-Captcha-Dienst aus. Setzen Sie sie deshalb nur dort ein, wo tatsächlich ein abgeschicktes Formular auszuwerten ist, und nicht vorsorglich in einem Seitenkopf.
Innerhalb eines Seitenaufrufs wird höchstens einmal angefragt. Weitere Auswertungen desselben Tags oder seines negativen Gegenstücks verwenden das gemerkte Ergebnis. Sie können den Bereich und den Gegenbereich also gefahrlos beide im Template stehen lassen.
Ist der Friendly-Captcha-Dienst nicht erreichbar, gilt die Prüfung als nicht bestanden. Die Einstellung fail-open, die es für die Captcha-Prüfung an anderen Stellen des Shopsystems gibt, wirkt auf diese beiden Tags nicht. Ein Formular, das allein über diese Klammerung abgesichert ist, ist bei einer Störung des Dienstes für niemanden mehr benutzbar. Planen Sie dafür einen erkennbaren Hinweis im Gegenbereich ein.

Wann welches der beiden

PassedOnce ist für Fälle gedacht, in denen ein Besucher innerhalb einer Sitzung mehrere geschützte Formulare ausfüllt. Er löst das Rätsel einmal, danach gilt er als geprüft. Das ist bequem, schützt aber nur den ersten Absendevorgang. PassedAlways prüft jedes Absenden einzeln. Das ist die Wahl für Formulare, die einzeln missbraucht werden können, beispielsweise ein Kontaktformular oder eine Anfrage.
PassedOnce merkt sich nicht nur das bestandene Ergebnis, sondern auch das gescheiterte, und fragt danach nicht mehr nach. Ist die erste Prüfung einer Sitzung fehlgeschlagen, liefert das Tag für den Rest der Sitzung den Code 2, egal was der Besucher danach eingibt. Das trifft auch den harmlosen Fall, dass ein Formular einmal ohne gelöstes Rätsel abgeschickt wurde.Der einzige Weg zurück führt über PassedAlways. Dieses Tag fragt erneut an und setzt bei Erfolg auch die Sitzung auf bestanden. Wenn Sie PassedOnce verwenden, sollten Sie das wiederholte Absenden desselben Formulars deshalb über PassedAlways absichern.

Das Ergebnis auswerten

Für die Fehlersuche gibt es zwei weitere Tags.
Beide Tags müssen im Template hinter PassedOnce oder PassedAlways stehen. Erst diese Klammerungen führen die Prüfung durch und setzen dabei Code und Antwort. Davor liefert der Code den Wert 0, was fälschlich nach einer bestandenen Prüfung aussieht.LastPlainResponse gibt die Antwort des Dienstes unverändert aus. Sie gehört in eine Testumgebung, nicht auf eine Seite, die Besucher sehen. Klammern Sie die Ausgabe zumindest so, dass sie nur im Testmodus erscheint.

Die Statuscodes

Die Codes 1 und 2 sind keine Fehler des Besuchers. Sie besagen, dass für diesen Seitenaufruf beziehungsweise diese Sitzung bereits ein negatives Ergebnis vorliegt und deshalb nicht erneut angefragt wurde. Die Codes 201 und 202 zeigen auf die Shopkonfiguration, nicht auf das Template. Treten sie auf, ist Friendly Captcha im Shop nicht vollständig eingerichtet.

Die Tags im Überblick

Alle Tags sind auf allen Templates zulässig. Die Schreibweise des Tagnamens spielt keine Rolle.

Verwandte Themen