Korzen

Blog

Fake-Registrierungen ohne CAPTCHA stoppen

Fake-Accounts verbrennen kostenlose Tests, verzerren Ihre Kennzahlen und bereiten späteren Missbrauch vor. Wie Sie eine skriptgesteuerte Registrierung von einer echten unterscheiden, und was Sie mit der Antwort tun.

Ein Registrierungsformular ist das Günstigste im Internet, das man angreifen kann. Es gibt kein Passwort zu erraten und keine Karte zu stehlen, und jedes Konto, das es erzeugt, ist jemandem etwas wert: ein kostenloser Test zum Weiterverkaufen, ein Empfehlungsbonus zum Farmen, ein Postfach für Spam oder ein Schläferkonto für späteren Betrug. Sind Ihre Registrierungen über Nacht gesprungen und Ihre Aktivierungsrate gefallen, füllt wahrscheinlich ein Skript das Formular aus.

Was Fake-Registrierungen Sie kosten

  • Geld: kostenlose Guthaben, Rechenleistung im Test, Gebühren für SMS- und E-Mail-Bestätigung, Empfehlungsprämien.
  • Daten: Ein Funnel voller Konten, die nie konvertieren, verdeckt, was echte Kunden tun.
  • Reputation: Bestätigungs-E-Mails an erfundene oder gestohlene Adressen prallen ab und schaden Ihrem Absender-Score.
  • Späterer Missbrauch: Heute angelegte Konten werden nächsten Monat für Spam, Scraping oder Card Testing genutzt.

Warum ein CAPTCHA nicht die Antwort ist

CAPTCHA-Lösungsdienste beantworten Rätsel für deutlich unter einem Cent pro Stück, mit Menschen oder Modellen, sodass ein entschlossener Angreifer ein wenig zahlt und durchgeht. Ihre echten Besucher zahlen den vollen Preis: Jedes Rätsel verliert einige von ihnen, auf Smartphones noch mehr. Ein CAPTCHA verlagert die Kosten auf die falsche Seite.

Was eine skriptgesteuerte Registrierung verrät

Kein einzelnes Signal ist ein Beweis, und alles, was ein Angreifer kontrolliert, etwa der User-Agent, lässt sich fälschen. Schwer fällt Skripten, über viele Signale gleichzeitig konsistent zu sein und sich über die Zeit wie ein Mensch zu verhalten.

  • Automatisierungs-Flags. Headless- und ferngesteuerte Browser verraten sich noch immer: navigator.webdriver, eine Software-GPU, fehlende Browserfunktionen.
  • Widersprüche. Ein User-Agent, der Windows angibt, in einem Browser, der Linux meldet, eine Zeitzone, die nicht zum Netzwerk passt, Client Hints, die den Headern widersprechen.
  • Das Netzwerk. Registrierungen von Hosting-Anbietern statt von Haushalten und Telefonen. Allein ist das ein schwacher Beleg: Auch VPN-Nutzer sind echte Menschen.
  • Fan-out. Ein Gerät, ein Token oder ein Subnetz, das in Minuten viele Konten anlegt.
  • Keine Seite. Eine Anfrage an den Registrierungs-Endpunkt von einem Client, der nie die Registrierungsseite geladen hat.

Auf dem Server entscheiden, bevor das Konto existiert

Die Entscheidung gehört dorthin, wo das Konto angelegt wird, nicht in den Browser, wo ein Skript sie überspringen kann. Bevor Sie den Nutzer anlegen, fragen Sie mit einem kurzen Timeout nach einer Entscheidung über die Anfrage:

POST /v1/decide
{ "ip": "203.0.113.10", "user_agent": "Mozilla/5.0 …",
  "token": "<_kz cookie>", "path": "/signup" }

Handeln Sie dann nach der Klasse, die Sie zurückbekommen, von der sichersten zur unsichersten:

  • bot high: die Registrierung ablehnen.
  • bot: das Konto anlegen, aber sein Testguthaben zurückhalten, bis die E-Mail bestätigt ist, oder nach einer Telefonnummer fragen.
  • unknown, human, human high: wie gewohnt durchlassen.

Die Belohnung zurückzuhalten, statt das Formular zu blockieren, sorgt dafür, dass sich Fake-Registrierungen nicht mehr lohnen, ohne einen echten Kunden abzuweisen, dessen einziger Fehler ein VPN war.

Fail-open

Ist die Prüfung langsam oder ausgefallen, lassen Sie die Registrierung durch. Ein paar Fake-Accounts während eines Ausfalls kosten weit weniger als eine Registrierungsseite, die nicht mehr funktioniert. Mehr dazu in warum eine Bot-Prüfung fail-open sein muss.