Zum Inhalt springen
Tutorial

Überprüfen Sie bei der Anmeldung gehackte E-Mails, ohne HaveIBeenPwned selbst auszuführen

| 6 min read

Erkennen Sie kompromittierte Zugangsdaten, bevor Sie sie speichern. Ein einzelner API-Aufruf, ein Next.js-Routenhandler und ein React Hook Form-Validator, der die Anmeldelatenz um 40 ms erhöht.

Login form on a screen representing signup flow and breach checks
Photo by Markus Spiske on Unsplash

Ein wiederkehrender Benutzer gibt sein Lieblingspasswort in Ihr Anmeldeformular ein. Dieses Passwort wurde im Zuge des AT&T-Dumps 2024, des 23andMe-Verstoßes 2023 und einer LastPass-Tresorextraktion 2022 durchgesickert. Sie speichern den Hash, beglückwünschen sich zu bcrypt und drei Wochen später dringt ein Credential-Stuffing-Bot von einem privaten Proxy in Brasilien aus in das Konto ein.

Die Lösung ist günstig. Ein API-Aufruf bei der Anmeldung zeigt Ihnen, ob die E-Mail in Korpora bekannter Sicherheitsverletzungen auftaucht. Nutzen Sie dieses Signal, um MFA zu erzwingen, ein stärkeres Passwort zu verlangen oder die Anmeldung in eine Überprüfungswarteschlange zu verschieben. Dieser Beitrag zeigt den Endpunkt, einen Next.js-Routenhandler und einen React Hook Form-Validator, der Ihre Anmeldelatenz um etwa 40 ms verlängert.

Warum bei der Anmeldung eine Sicherheitsverletzungsprüfung durchführen, nicht später?

Credential Stuffing funktioniert, weil 65 % der Nutzer Passwörter auf verschiedenen Websites wiederverwenden (Google/Harris 2019, repliziert in der Bitwarden-Umfrage 2023). Eine E-Mail, die mit 14 früheren Verstößen verknüpft ist, ist keine Zufallsstichprobe aus dem Internet; Es handelt sich um einen Benutzer, der das gleiche Passwort an 14 verschiedene undichte Anbieter weitergegeben hat. Die Wahrscheinlichkeit, dass sie dasselbe in Ihr Formular eingegeben haben, ist gering.

Die Überprüfung bei der Anmeldung kostet Sie einen Hin- und Rückflug. Eine Überprüfung nach einer Übernahme kostet Sie ein Support-Ticket, eine Rückerstattung, eine Vertrauens- und Sicherheitsprüfung und häufig eine Benachrichtigung über einen Verstoß gegen die DSGVO. Sie möchten das Signal, bevor das Passwort in Ihrer Benutzertabelle landet, und nicht danach.

Ein API-Aufruf, zwei Signale

POST /v1/breach/check akzeptiert entweder eine E-Mail oder ein Passwort. Hier ist der E-Mail-Anruf.

Und eine Beispielantwort für eine Adresse, die in drei Korpora erscheint.

Zwei Dinge, die es wert sind, erwähnt zu werden. breach_count und die breaches Das Array liefert Ihnen Datensatznamen, Daten und die Gesamtzahl der Datensätze. Sie geben weder das offengelegte Passwort noch den vollständigen geleakten Datensatz noch andere personenbezogene Daten zurück, die über die von Ihnen gesendeten Daten hinausgehen. password_exposed wird nur ausgefüllt, wenn Sie a übergeben password Feld im Anfragetext. Für die Anmeldung reicht die E-Mail-Adresse allein aus, um das Risiko abzuschätzen.

Die K-Anonymitäts-API von HaveIBeenPwned ist für den persönlichen Gebrauch kostenlos und eignet sich hervorragend für die Suche nach Passwort-Präfixen. Im Produktionsmaßstab zahlen Sie 3,50 $/Monat pro Schlüssel und behalten die SHA-1-Präfixverarbeitung sowie clientseitige Ratenbegrenzungen bei. Der Botoi-Endpunkt umschließt diese Installation und fügt Edge-Caching, einheitliche Authentifizierung mit dem Rest der API und eine einzige Rechnung hinzu.

Next.js-Routenhandler

Platzieren Sie den Aufruf hinter Ihrer eigenen Route, damit der API-Schlüssel auf dem Server verbleibt. Validieren Sie Eingaben mit Zod, fügen Sie ein AbortController-Timeout von 300 ms hinzu und öffnen Sie bei Upstream-Fehlern nicht, sodass eine langsame Verletzungsprüfung niemals eine echte Anmeldung blockiert.

Einige Designoptionen, die es wert sind, erwähnt zu werden. Das Timeout ist knapp (300 ms), da die P95-Antwort 120 ms beträgt und alles, was langsamer ist, ein Übergang ist; Der Fail-Open-Zweig kehrt zurück risk: 'low' Daher kann ein unbefugter Dritter Ihr Anmeldeformular nicht löschen. Der tier() Die Funktion ist der einzige Ort, an dem die Risikopolitik lebt, was es schwierig macht, sie später neu abzustimmen.

Clientseitiger React Hook Form-Validator

Entprellen Sie um 500 ms, damit Sie nicht bei jedem Tastendruck eine Anfrage auslösen. Blockieren Sie nicht die Schaltfläche „Senden“ für das Ergebnis. Zeigen Sie stattdessen eine Warnung an und schalten Sie MFA vorab um. Warnungen konvertieren; Durch harte Blöcke verlieren Sie den Benutzer.

Vernetzen Sie den Hook mit einer React Hook Form-Komponente. Der watch Der Anruf leitet die E-Mail in den Hook ein und das Ergebnis überprüft das MFA-Feld vorab auf verletzte Adressen.

Was tun mit dem Ergebnis?

Übersetzen Sie die Anzahl der Verstöße in eine Richtlinie. Beginnen Sie mit dieser Tabelle und stimmen Sie ab, sobald Sie zwei Wochen Anmeldungen hinter der Wertung haben.

Anzahl der Verstöße Aktion UX Warum
0 Fortfahren Keine Änderung Keine öffentlichen Beweise für einen früheren Kompromiss; Standardpfad.
1-3 Prompte MFA Aktivieren Sie vorab das MFA-Kontrollkästchen und zeigen Sie eine Soft-Warnung an Ein wiederverwendetes Passwort pro Verstoß ist üblich; Fordern Sie den Benutzer auf, das neue Konto zu schützen.
4-10 MFA + sicheres Passwort erzwingen Vor der ersten Anmeldung ist eine TOTP-Registrierung erforderlich, mindestens 14 Zeichen Wiederholte Offenlegung deutet darauf hin, dass die E-Mail in allen wichtigen Anmeldedatenlisten enthalten ist. Ein schwaches Passwort ist hier eine Übernahme, die darauf wartet, geschehen zu können.
10+ Soft-Block mit Reibung Fügen Sie ein Captcha hinzu oder senden Sie es zur manuellen Überprüfung Diese E-Mail ist praktisch öffentlich. Erhöhen Sie die Kosten des Angreifers, bevor Sie ein Konto erstellen.

Kombinieren Sie es mit zwei weiteren Prüfungen für weniger als 120 ms

Allein die Verletzungsprüfung fängt das Risiko der Wiederverwendung von Passwörtern ab. Kombiniere es mit /v1/disposable-email/check um Tempmail-Domänen zu kennzeichnen und /v1/vpn-detect um Rechenzentrums- oder Tor-Quell-IPs zu kennzeichnen, und Sie verfügen über eine Drei-Signal-Scorecard, die beim P95 parallel unter 120 ms läuft. Das vollständige Bewertungsmuster (Gewichtungen, Schwellenwerte, Prüfprotokollierung) ist enthalten Stoppen Sie Anmeldebetrug mit 3 API-Prüfungen.

Holen Sie sich einen kostenlosen API-Schlüssel unter botoi.com/api/signup. Das kostenlose Kontingent deckt 1.000 Sicherheitsverletzungsprüfungen pro Tag ab (5 Anforderungs-/Min.-Burst), genug für ein kleines SaaS oder um Ihre Anmeldungen der letzten 30 Tage über den Endpunkt abzuspielen und die oben genannten Stufen anhand von Abwanderungs- und Missbrauchsdaten zu kalibrieren.

Vollständige Endpunktreferenz: API zur Überprüfung von Verstößen.

FAQ

Werden dadurch E-Mail-Adressen an Botoi weitergegeben?
Die E-Mail erreicht die API über TLS und wird nur zur Berechnung der Übereinstimmung mit der Sicherheitsverletzung verwendet. Anforderungstexte werden nicht in Zugriffsprotokollen gespeichert. Nur Methode, Pfad, Status und Latenz werden 30 Tage lang aufbewahrt. Die vollständige Erklärung zur Datenverarbeitung finden Sie in den API-Dokumenten.
Wie hoch ist die typische Latenz?
Die mittlere Antwortzeit beträgt 40 ms von einem Cloudflare Workers-Edge-Knoten, 120 ms beim 95. Perzentil. Der Handler in diesem Beitrag legt ein AbortController-Timeout von 300 ms fest, sodass ein langsamer Aufruf Ihr Anmeldeformular nicht blockieren kann.
Wie aktuell ist der Verstoßdatensatz?
Der Datensatz wird wöchentlich aus öffentlichen Dumps (HIBP-verfolgte Verstöße, Credential-Stuffing-Listen und Sammlung Nr. 1 bis Nr. 5) synchronisiert. Neue Korpora werden innerhalb von 7 Tagen nach der Veröffentlichung angezeigt.
Kann ich Passwörter direkt überprüfen?
Ja. POSTEN Sie ein SHA-1-Präfix (die ersten 5 Hexadezimalzeichen) oder das Klartext-Passwort an denselben Endpunkt. Die Präfixform ist für clientseitige Aufrufer sicherer, da der vollständige Hash den Browser nie verlässt. Verwenden Sie nur Klartext von Ihrem Server.
Ist das DSGVO-konform?
Die Überprüfung von Verstößen ist eine Sicherheitsmaßnahme gemäß Artikel 32 DSGVO (Sicherheit der Verarbeitung). Dokumentieren Sie die Prüfung in Ihrem Verarbeitungsverzeichnis, führen Sie botoi als Auftragsverarbeiter in Ihrem DPA auf und vermerken Sie die Rechtsgrundlage (berechtigtes Interesse an der Verhinderung einer Kontoübernahme).

Starte mit botoi zu entwickeln

150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.