Periksa email yang dibobol saat mendaftar tanpa menjalankan HaveIBeenPwned sendiri
Tangkap kredensial yang disusupi sebelum Anda menyimpannya. Satu panggilan API, pengendali rute Next.js, dan validator React Hook Form yang menambahkan 40 md ke latensi pendaftaran.
Pengguna yang kembali mengetikkan kata sandi favorit mereka ke dalam formulir pendaftaran Anda. Kata sandi tersebut bocor di dump AT&T tahun 2024, pelanggaran 23andMe tahun 2023, dan ekstraksi brankas LastPass tahun 2022. Anda menyimpan hash, memberi selamat kepada diri Anda sendiri atas bcrypt, dan tiga minggu kemudian bot yang memasukkan kredensial masuk ke akun dari proxy perumahan di Brasil.
Perbaikannya murah. Satu panggilan API saat pendaftaran memberi tahu Anda apakah email tersebut muncul di korpora pelanggaran yang diketahui. Gunakan sinyal tersebut untuk memaksa MFA, memerlukan kata sandi yang lebih kuat, atau memasukkan pendaftaran ke antrean peninjauan. Posting ini menunjukkan titik akhir, pengendali rute Next.js, dan validator React Hook Form yang menambahkan sekitar 40 md ke latensi pendaftaran Anda.
Mengapa pelanggaran harus diperiksa saat mendaftar, bukan nanti
Pengisian kredensial berfungsi karena 65% pengguna menggunakan kembali kata sandi di seluruh situs (Google/Harris 2019, direplikasi dalam survei Bitwarden tahun 2023). Sebuah email yang dikaitkan dengan 14 pelanggaran sebelumnya bukanlah sampel acak dari internet; itu adalah pengguna yang telah memberikan kata sandi yang sama ke 14 vendor bocor yang berbeda. Kemungkinan kecil mereka mengetikkan kata yang sama ke dalam formulir Anda tinggi.
Memeriksa saat pendaftaran dikenakan biaya satu kali perjalanan pulang pergi. Memeriksa setelah pengambilalihan akan dikenakan biaya tiket dukungan, pengembalian dana, tinjauan kepercayaan dan keamanan, dan sering kali pemberitahuan pelanggaran GDPR. Anda ingin sinyal sebelum kata sandi masuk ke tabel pengguna Anda, bukan setelahnya.
Satu panggilan API, dua sinyal
POST /v1/breach/check menerima email atau kata sandi. Ini panggilan emailnya.
Dan contoh tanggapan untuk alamat yang muncul di tiga corpora.
Dua hal yang patut disuarakan. breach_count dan itu breaches array memberi Anda nama kumpulan data, tanggal, dan jumlah catatan total; mereka tidak mengembalikan kata sandi yang terekspos, catatan lengkap yang bocor, atau PII apa pun selain yang Anda kirimkan. password_exposed hanya diisi ketika Anda melewati a password bidang di badan permintaan. Untuk mendaftar, email saja sudah cukup untuk menentukan tingkat risiko.
API k-anonimitas HaveIBeenPwned gratis untuk penggunaan pribadi dan sangat baik untuk pencarian awalan kata sandi. Pada skala produksi, Anda membayar $3,50/bulan per kunci dan mempertahankan penanganan awalan SHA-1 ditambah batas tarif sisi klien. Titik akhir botoi membungkus pipa itu dan menambahkan cache tepi, autentikasi terpadu dengan API lainnya, dan satu tagihan.
Pengendali rute Next.js
Letakkan panggilan di belakang rute Anda sendiri sehingga kunci API tetap berada di server. Validasi input dengan Zod, tambahkan batas waktu AbortController 300 md, dan gagalkan pembukaan pada kesalahan upstream sehingga pemeriksaan pelanggaran yang lambat tidak pernah memblokir pendaftaran sebenarnya.
Beberapa pilihan desain patut disebutkan. Batas waktunya ketat (300 md) karena respons P95 adalah 120 md dan apa pun yang lebih lambat bersifat sementara; cabang yang gagal terbuka kembali risk: 'low' jadi pihak ketiga yang lemah tidak dapat menghapus formulir pendaftaran Anda. Itu tier() fungsi adalah satu-satunya tempat kebijakan berisiko hidup, sehingga sulit untuk disesuaikan kembali nanti.
Validator Formulir React Hook sisi klien
Debounce sebanyak 500 md sehingga Anda tidak memicu permintaan pada setiap penekanan tombol. Jangan memblokir tombol kirim pada hasil; tampilkan peringatan dan alihkan MFA terlebih dahulu. Peringatan diubah; blok keras membuat Anda kehilangan penggunanya.
Hubungkan pengait ke dalam komponen React Hook Form. Itu watch call memasukkan email ke dalam hook, dan hasilnya memeriksa terlebih dahulu kotak MFA untuk alamat yang dilanggar.
Apa yang harus dilakukan dengan hasilnya
Terjemahkan jumlah pelanggaran ke dalam kebijakan. Mulailah dengan tabel ini dan sesuaikan setelah Anda memiliki dua minggu pendaftaran di belakang penilaian.
| Jumlah pelanggaran | Tindakan | UX | Mengapa |
|---|---|---|---|
| 0 | Melanjutkan | Tidak ada perubahan | Tidak ada bukti publik mengenai kompromi sebelumnya; jalur bawaan. |
| 1-3 | MFA yang cepat | Centang terlebih dahulu kotak MFA, tampilkan peringatan lembut | Satu kata sandi yang digunakan kembali untuk setiap pelanggaran adalah hal biasa; mendorong pengguna untuk melindungi akun baru. |
| 4-10 | Paksa MFA + kata sandi yang kuat | Memerlukan pendaftaran TOTP sebelum login pertama, minimal 14 karakter | Paparan berulang menunjukkan bahwa email tersebut ada di setiap daftar kredensial utama; kata sandi yang lemah di sini adalah pengambilalihan yang menunggu untuk terjadi. |
| 10+ | Blok lunak dengan gesekan | Tambahkan captcha atau kirim ke tinjauan manual | Email ini secara efektif bersifat publik. Tingkatkan biaya penyerang sebelum Anda membuat akun di dalamnya. |
Tumpuk dengan dua pemeriksaan lagi untuk waktu di bawah 120 md
Pemeriksaan pelanggaran saja dapat menangkap risiko penggunaan kembali kata sandi. Pasangkan dengan /v1/disposable-email/check untuk menandai domain tempmail dan /v1/vpn-detect untuk menandai pusat data atau IP sumber Tor, dan Anda memiliki kartu skor tiga sinyal yang berjalan secara paralel di bawah 120 ms di P95. Pola penilaian penuh (bobot, ambang batas, pencatatan audit) tetap ada Hentikan penipuan pendaftaran dengan 3 pemeriksaan API.
Dapatkan kunci API gratis di botoi.com/api/signup. Tingkat gratis mencakup 1.000 pemeriksaan pelanggaran per hari (5 permintaan/menit lonjakan), cukup untuk SaaS kecil atau untuk memutar ulang 30 hari terakhir pendaftaran Anda melalui titik akhir dan mengkalibrasi tingkatan di atas terhadap churn dan penyalahgunaan data.
Referensi titik akhir lengkap: API Pemeriksaan Pelanggaran.
FAQ
- Apakah ini membocorkan alamat email ke botoi?
- Email tersebut masuk ke API melalui TLS dan hanya digunakan untuk menghitung kecocokan pelanggaran. Badan permintaan tidak disimpan dalam log akses; hanya metode, jalur, status, dan latensi yang dipertahankan selama 30 hari. Lihat dokumen API untuk pernyataan penanganan data selengkapnya.
- Berapa latensi tipikalnya?
- Waktu respons rata-rata adalah 40 md dari node tepi Cloudflare Workers, 120 md pada persentil ke-95. Penangan dalam posting ini menetapkan batas waktu AbortController 300 md sehingga panggilan lambat tidak dapat memblokir formulir pendaftaran Anda.
- Seberapa baru kumpulan data pelanggaran tersebut?
- Kumpulan data disinkronkan setiap minggu dari dump publik (pelanggaran yang dilacak HIBP, daftar isian kredensial, dan Koleksi #1 hingga #5). Korpora baru muncul dalam waktu 7 hari setelah pengungkapan publik.
- Bisakah saya memeriksa kata sandi secara langsung?
- Ya. POST awalan SHA-1 (5 karakter hex pertama) atau kata sandi teks biasa ke titik akhir yang sama. Bentuk awalan lebih aman untuk pemanggil sisi klien karena hash lengkap tidak pernah keluar dari browser. Gunakan teks biasa hanya dari server Anda.
- Apakah ini sesuai dengan GDPR?
- Pemeriksaan pelanggaran adalah tindakan pengamanan berdasarkan Pasal 32 GDPR (keamanan pemrosesan). Dokumentasikan cek tersebut dalam Catatan Aktivitas Pemrosesan Anda, cantumkan botoi sebagai pemroses di DPA Anda, dan catat dasar hukumnya (kepentingan yang sah dalam mencegah pengambilalihan akun).
Mulai membangun dengan botoi
150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.