Skriza Shield

Ein Captcha, das nichts auf dem Endgerät speichert.

Shield prüft, ob ein Aufruf von einem Menschen kommt, ohne dafür ein Cookie zu setzen, einen Geräte-Fingerabdruck zu bilden oder eine IP-Adresse im Klartext zu speichern. Wir haben es gebaut, weil wir Google reCAPTCHA von unserer eigenen Anmeldung nehmen wollten; seit Juli 2026 läuft es dort im Produktivbetrieb.

Erst ausprobieren, dann lesen

Das ist die echte Challenge, nicht ein Video davon. Sie erscheint nur, wenn die unsichtbare Prüfung etwas auffällig findet – bei den meisten Aufrufen passiert nichts von dem, was du hier siehst. Geprüft wird, wie gedreht wird, nicht ob der Winkel am Ende genau stimmt.

Öffne währenddessen den Speicher-Tab deiner Entwicklerwerkzeuge. Da steht nachher genauso viel drin wie vorher: nichts.

Wie eine Prüfung abläuft

Drei Schritte, von denen die meisten Besucher nur den ersten bemerken – und den auch nur, weil ein Häkchen erscheint.

  1. Unsichtbare Prüfung

    Der Browser löst einen kleinen Rechenbeweis (Proof-of-Work) und meldet technische Merkmale, die für automatisierte Browser typisch sind – jedes davon schon im Browser auf ja/nein oder eine gerundete Zahl reduziert. Für einen Lesenden sind das wenige Millisekunden, für ein Skript mit tausenden Anfragen echte Rechenzeit.

  2. Nur bei Verdacht: interaktive Challenge

    Passt etwas nicht zusammen, kommt die Drehaufgabe. Bewertet wird der Bewegungsverlauf, nicht die Endposition – eine Maus, die in einer perfekten Linie zum Ziel fährt, ist kein gutes Zeichen. Übertragen werden dabei nur aggregierte Kennwerte, keine Koordinaten und keine Bewegungsspur.

  3. Ergebnis an dein Backend

    Am Ende steht ein einmalig verwendbares Token mit einer Gültigkeit von etwa fünf Minuten. Dein Server tauscht es gegen das Prüfergebnis: Risikowert, Aktion und wenige maschinenlesbare Gründe. Was daraus folgt, entscheidest du – Shield sperrt nicht dein Konto, es beantwortet eine Frage.

Was Shield verarbeitet – und was nicht

Die linke Spalte ist die vollständige Liste. Wenn dir hier etwas fehlt, das du erwartet hättest, liegt das nicht daran, dass wir es weggelassen haben, um gut auszusehen.

Verarbeitet

  • IP-Adresse, ausschließlich als nicht umkehrbarer HMAC-Hash – Schlüssel für kurzlebige Zähler, nie im Klartext gespeichert
  • Land und Netzbetreiber (ASN), aus der IP abgeleitet, kurz zwischengespeichert
  • Automatisierungs-Indikatoren wie navigator.webdriver, als Wahrheitswerte
  • Umgebungs-Konsistenz: Anzahl Plugins und Sprachen, Kerne, Speicherklasse, Fenstermaße, Zeitzonen-Versatz
  • Grafik-Hinweise als ja/nein: Software-Renderer, WebGL vorhanden
  • Aggregierte Interaktions-Kennwerte, während das Widget sichtbar ist
  • Zähler pro IP-Hash über Prüfungen, Fehlversuche und Sperren

Nicht verarbeitet

  • Kein Cookie, kein localStorage, kein sessionStorage, keine IndexedDB, keine Kennung im Cache
  • Kein Canvas-Bild, kein Font-Hashing, kein Renderer-String – kein wiedererkennbarer Fingerabdruck
  • Keine Mauskoordinaten und keine Bewegungsspur
  • Keine Klartext-IP in der Datenbank
  • Kein Inhalt des Formulars, das geschützt wird
  • Keine Verknüpfung mit einem Werbeprofil, keine Weitergabe an Dritte
  • Keine Übermittlung in ein Drittland

Vollständiger Datenschutzhinweis mit Speicherdauern

Einbindung

Zwei Zeilen im Formular, ein Aufruf im Backend. Die Form ist absichtlich der von Cloudflare Turnstile nachempfunden, damit ein Wechsel keine Umschreibung des Formulars bedeutet.

In die Seite, wo das Widget stehen soll:

<div class="skriza-shield" data-sitekey="skz_site_..."></div>
<script src="https://skriza.com/api/shield/embed" async defer></script>

Im Backend, gegen das gesendete Token:

curl -X POST https://skriza.com/api/shield/siteverify \
  -d secret=$SKRIZA_SHIELD_SECRET \
  -d response=$FORM[skriza-shield-response]

Antwort bei Erfolg:

{ "success": true, "action": "signup", "score": 4 }

Site-Key und Secret bekommst du im Developer-Portal. Das Secret wird genau einmal angezeigt.

Wo Shield nicht die richtige Wahl ist

Damit du es nicht erst nach der Integration merkst.

  • Wenn du ein Erkennungsniveau brauchst, das auf Milliarden Anfragen pro Tag trainiert ist: Google und Cloudflare sehen mehr Angriffsverkehr als wir, und dieser Vorsprung ist real. Shield stoppt Skripte, Massenregistrierungen und Formular-Spam zuverlässig; gegen einen bezahlten menschlichen Lösungsdienst hilft kein Captcha, auch keines von denen.
  • Wenn deine Nutzer JavaScript deaktiviert haben: ohne Skript gibt es keinen Rechenbeweis und keine Prüfung. Halte für diesen Fall einen anderen Weg offen.
  • Wenn du ein Audit-Zertifikat brauchst: wir haben keines. Was wir haben, ist eine veröffentlichte Beschreibung der Verarbeitung und einsehbares Verhalten im Browser.
  • Wenn die Drehaufgabe für deine Nutzergruppe nicht bedienbar ist: die unsichtbare Prüfung läuft ohne motorische Aufgabe, aber halte eine barrierefreie Alternative vor, wenn die Challenge greift.

Häufige Fragen

Auch die, die uns nicht schmeicheln.

Brauche ich für Shield ein Cookie-Banner?

Nein. § 25 Abs. 1 TDDDG setzt voraus, dass Informationen in der Endeinrichtung gespeichert oder ausgelesen werden. Shield tut beides nicht, deshalb greift die Norm nicht und es gibt nichts, worin eingewilligt werden könnte. Auf die Ausnahme für unbedingt erforderliche Dienste müssen wir uns dafür nicht stützen.

Kann Shield mich über mehrere Websites hinweg wiedererkennen?

Es gibt einen seitenübergreifenden Zähler: Wer auf einer Shield-geschützten Seite blockiert wurde, wird auf einer anderen früher zur Challenge aufgefordert. Gespeichert wird dafür nur eine Zahl zu einem IP-Hash in einem gleitenden 24-Stunden-Fenster – nicht, welche Seiten besucht wurden. Ein Profil entsteht daraus nicht, aber es ist mehr als nichts, und deshalb steht es hier und nicht im Kleingedruckten. Abschaltbar pro Website.

Ist das genauso gut wie reCAPTCHA?

Bei der Erkennung nicht in jeder Hinsicht – siehe den Abschnitt darüber, wo Shield nicht passt. Beim Datenschutz ja, und das ist überprüfbar statt behauptet: Speicher-Tab öffnen, Netzwerk-Tab öffnen, nachsehen.

Was passiert, wenn Skriza ausfällt?

Dann kommt kein Token, und dein Formular muss entscheiden, wie es damit umgeht. Wir empfehlen, für Anmeldungen im Zweifel durchzulassen und für Registrierungen zu blockieren – aber das ist deine Abwägung, und du solltest sie treffen, bevor der Fall eintritt. Skriza ist ein Ein-Personen-Projekt; ein Verfügbarkeitsversprechen, das wir nicht halten können, geben wir nicht.

Was kostet es?

In der geschlossenen Beta nichts. Eine Preisliste gibt es noch nicht, und wir erfinden hier keine.

Site-Key anlegen

Shield ist Teil des Developer-Portals von Skriza. Dort legst du eine Website an, bekommst Site-Key und Secret, stellst die Empfindlichkeit ein und siehst die Zahlen zu verifiziert und blockiert.