दुरुपयोग-रोधी और कोड सुरक्षा
प्रीव्यू मेंकोड एक रहस्य है। हम इसे वैसा ही मानते हैं।
एक वन-टाइम कोड उतना ही अच्छा होता है जितना उसे जेनरेट, स्टोर और रेट-लिमिट करने का तरीका। Bird Verify कोड को क्रिप्टोग्राफिक स्रोत से जेनरेट करता है, केवल एक hash स्टोर करता है, कॉन्स्टेंट टाइम में तुलना करता है, और सेंड तथा अनुमान दोनों को सीमित करता है — ताकि लीक हुआ log या ब्रूट-फोर्स लूप किसी हमलावर को कहीं न पहुँचाए। Fraud स्कोरिंग इसी नींव पर आगे बनती है।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Send the code, then check it by recipient.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
}).safe();
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: userInput,
}).safe();
सुरक्षा जो डिफ़ॉल्ट रूप से चालू है, कोई ऐड-ऑन नहीं।
Bird Verify API पर हर वेरिफ़िकेशन में एक जैसी सुरक्षा होती है: कोड सर्वर-साइड जेनरेट होता है, कभी लौटाया नहीं जाता, और केवल hash के रूप में स्टोर होता है; जाँच कॉन्स्टेंट टाइम में और एक सीमित अटेम्प्ट बजट के भीतर चलती है; और सेंड प्रति-प्राप्तकर्ता तथा प्रति-workspace सीमित होते हैं। आपको इन्हें ऑप्ट-इन या वायर करने की जरूरत नहीं — API ऐसे ही व्यवहार करती है, चाहे आप इसे two-factor login के रूप में चलाएं या passwordless sign-in के रूप में।
हर वेरिफ़िकेशन पर पाँच सुरक्षाएँ।
कोई सेटअप स्टेप नहीं, कोई ऐड-ऑन SKU नहीं।
- 01
क्रिप्टोग्राफिक जेनरेशन।
कोड एक क्रिप्टोग्राफिक रैंडम स्रोत से लिए जाते हैं, कोड स्पेस में समान रूप से वितरित, न कि किसी पूर्वानुमानित काउंटर या टाइमस्टैम्प से।
- 02
आराम की स्थिति में hash, वायर पर कभी बाहर नहीं।
प्रत्येक कोड का केवल एक HMAC-SHA256 स्टोर होता है; plaintext कभी API द्वारा लौटाया नहीं जाता और न ही आपके स्टैक या हमारे logs में लिखा जाता है।
- 03
कॉन्स्टेंट-टाइम तुलना।
सबमिट किए गए कोड की तुलना कॉन्स्टेंट टाइम में होती है, इसलिए किसी हमलावर को इससे कुछ पता नहीं चलता कि जाँच में कितना समय लगा।
- 04
अटेम्प्ट लॉकआउट।
प्रत्येक सेशन में जाँच की एक सीमित संख्या होती है (डिफ़ॉल्ट रूप से 5)। एक बार ये खत्म होने पर सेशन विफल हो जाता है, इसलिए अनुमान लगाना हमेशा नहीं चल सकता।
- 05
सेंड कैप और कोटा।
एक प्रति-प्राप्तकर्ता सेंड कैप, एक रीसेंड कूलडाउन, और एक प्रति-workspace दैनिक कोटा खर्च और दुरुपयोग की सतह को सीमित करते हैं, हर एक Retry-After के साथ 429।
अनुमान आपके उपयोगकर्ताओं से पहले खत्म हो जाते हैं।
गलत कोड एक परिणाम के रूप में शेष अटेम्प्ट के साथ वापस आता है, और बजट खत्म होते ही सेशन विफल हो जाता है, इसलिए ब्रूट-फोर्स लूप एक खुले दरवाजे के बजाय एक दीवार से टकराता है।
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: guess,
}).safe();
// wrong code, attempts left → { result: "invalid", attempts_remaining: 2 }
// budget spent, session done → { result: "failed", attempts_remaining: null }आगे आने वाला: fraud सिग्नल और SMS-पंपिंग सुरक्षा।
Verify आज जो प्रति-सेंड इतिहास रिकॉर्ड करता है, वह उस fraud लेयर की नींव है जिसे हम अभी बना रहे हैं। यह उन्हीं create और check कॉल्स पर चलती है — इसलिए बाद में इसे अपनाना एक config बदलाव है, न कि फिर से इंटीग्रेशन।
Create पर रिस्क सिग्नल। किसी वेरिफ़िकेशन पर device, IP और request context पास करें, और हाई-रिस्क अटेम्प्ट को कोड भेजे जाने से पहले ही blocked परिणाम मिल जाता है — ताकि आप किसी हमलावर को मैसेज करने का भुगतान न करें।
SMS-पंपिंग और AIT सुरक्षा। प्रति-देश और प्रति-prefix सेंड कैप साथ ही प्रति-workspace खर्च सीमा उस artificially-inflated-traffic हमले को रोकती है जो carrier राजस्व हिस्सेदारी के लिए OTP को प्रीमियम नंबर रेंज तक पहुँचाता है।
जो पहले से मौजूद है उसी पर बना। रिस्क निर्णय उस अटेम्प्ट इतिहास को पढ़ता है जिसे Verify पहले दिन से रखता है, और blocked परिणाम पहले से ही status मॉडल का हिस्सा है — इसलिए fraud लेयर आपके इंटीग्रेशन को दोबारा आकार दिए बिना आ जाती है।
वेरिफ़िकेशन सुरक्षा FAQ
वन-टाइम कोड कहाँ स्टोर होता है?+
आप किसी को कोड ब्रूट-फोर्स करने से कैसे रोकते हैं?+
SMS पंपिंग और artificially inflated traffic के बारे में क्या?+
क्या इन सुरक्षाओं की अतिरिक्त लागत लगती है?+
मेरे उपयोगकर्ता किसकी ओर से कोड देखते हैं?+
बाकी Verify प्लेटफ़ॉर्म
एक API, कीज़ का एक सेट। बाकी क्षमताओं को एक्सप्लोर करें।
कोड जिस तरह जेनरेट, स्टोर और रेट-लिमिट होने चाहिए, उसी तरह होते हैं।
सुरक्षा Bird Verify में बिल्ट-इन है, ऊपर से बेची नहीं जाती: चैनल, कोड और लिमिट वही दो endpoints हैं।