Entwickler-Dokumentation

Einführung

CDPCaptcha ist ein Proof-of-Work-Captcha.
Statt Menschen Bilder erkennen zu lassen, löst der Browser des Besuchers im Hintergrund ein kleines kryptografisches Rätsel.
Bots können das auch, aber es kostet sie bei jeder einzelnen Anfrage Rechenzeit, und das macht massenhaften Missbrauch teuer.
Menschen merken davon kaum etwas.

Was Sie brauchen

  • Einen Sitekey: öffentlich, einer je Website oder App, angelegt in Ihrem Konto.
  • Einen API-Key: geheim, damit prüft Ihr Server die Antworten.
  • Zwei Tags in Ihrem HTML und eine Anfrage von Ihrem Server.

So läuft eine Prüfung ab

  1. Das Widget fordert beim CDPCaptcha-Server ein Rätsel an. Das Rätsel ist signiert (HMAC-SHA256) und läuft ab.
  2. Ein Web Worker sucht Nonces, sodass jeder Hash eines Teilrätsels mit einer Anzahl Null-Bits beginnt. Die Anzahl der Bits ist die Schwierigkeit.
  3. Das Widget schreibt das Antwort-Token in ein verstecktes Formularfeld und löst ein Ereignis aus.
  4. Ihr Server schickt das Token mit Ihrem API-Key an die siteverify-Adresse. Der Server prüft Signatur, Ablauf, Einmalnutzung und Lösung und antwortet mit JSON.

Grundsätze

  • Keine Cookies, kein Local Storage, kein Fingerprinting, keine Anfragen an Dritte.
  • Barrierefrei: nichts zu sehen oder zu tippen, ein per Tastatur erreichbarer Button, Live-Region für Screenreader.
  • Selbst gehostet: PHP 8 und MariaDB, ein Ordner, eine .env-Datei.
  • Jedes Rätsel gilt nur einmal; Wiederholungen werden abgelehnt.

Erste Schritte