> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# बॉट सुरक्षा: साइन-इन पर स्टफ़िंग, ब्रूट फ़ोर्स

> Didit से साइन-अप और साइन-इन को बॉट, क्रेडेंशियल स्टफ़िंग और ब्रूट फ़ोर्स से बचाएँ, साथ ही डिस्पोज़ेबल ईमेल और जोखिमपूर्ण नेटवर्क की जाँच करें।

> [!WARNING]
>
> प्रमाणीकरण नया है। सुरक्षा तब तक बंद रहती है जब तक आप इसे चालू नहीं करते। रेट लिमिट और सीमित कोड प्रयास हमेशा लागू रहते हैं।

बॉट सुरक्षा हर साइन-अप, साइन-इन और पासवर्ड रीसेट पर चलती है। यह हर प्रयास की जाँच छह नीतियों के आधार पर करती है। हर नीति का एक मोड होता है:

| मोड | क्या होता है |
| - | - |
| **बंद** | नीति की जाँच नहीं की जाती। |
| **लॉग** | प्रयास जारी रहता है। `risk_logged` इवेंट मिलान को दर्ज करता है। |
| **चुनौती** | व्यक्ति को प्रयास जारी रखने से पहले एक अतिरिक्त प्रमाण देना होता है। |
| **ब्लॉक करें** | प्रयास `403 {"error": "attempt_blocked"}` के साथ विफल हो जाता है। |

## सुरक्षा कॉन्फ़िगर करें

`protection/` पर `GET` और `PATCH` के साथ अपने एप्लिकेशन के प्रमाणीकरण प्रबंधन API में सेटिंग्स पढ़ें और बदलें, या कंसोल से।

```json theme={null}
{
  "enabled": true,
  "breached_password_check": true,
  "policies": {
    "bots": "block",
    "stuffing": "block",
    "brute": "challenge",
    "disposable": "block",
    "vpn": "challenge",
    "travel": "block"
  }
}
```

`enabled` और `breached_password_check` डिफ़ॉल्ट रूप से `false` होते हैं। सुरक्षा चालू करने के बाद ऊपर दिए गए मोड डिफ़ॉल्ट होते हैं।

## नीतियाँ

| नीति | कब मेल खाती है |
| - | - |
| `bots` | क्लाइंट 0.8 या उससे अधिक का बॉट स्कोर भेजता है, या यूज़र एजेंट कोई ज्ञात हेडलेस या स्वचालित ब्राउज़र है। |
| `stuffing` | एक डिवाइस या IP 15 मिनट के भीतर 10 या अधिक अलग-अलग खातों पर प्रयास करता है, या पासवर्ड कोई ज्ञात लीक पासवर्ड है। |
| `brute` | खाते में 5 या अधिक विफल प्रयास हों। गलत पासवर्ड और गलत ईमेल, फ़ोन और ऑथेंटिकेटर कोड, सभी गिने जाते हैं। |
| `disposable` | साइन-अप में डिस्पोज़ेबल ईमेल डोमेन का उपयोग हो। |
| `vpn` | IP एक VPN, Tor या डेटा-सेंटर नेटवर्क है। |
| `travel` | साइन-इन पिछले साइन-इन से 500 किमी से अधिक दूर है, 1,000 किमी/घंटा से अधिक की गति पर, 24 घंटे के भीतर। |

`vpn` और `travel` नीतियाँ Didit के IP विश्लेषण का उपयोग करती हैं। यदि वह लुकअप उपलब्ध नहीं है, तो प्रयास जारी रहता है; किसी साइन-इन की विफलता इसके कारण कभी नहीं होती। `travel` के लिए स्थान केवल साइन-इन पूरा होने के बाद अपडेट होता है।

### ब्रूट फ़ोर्स और लॉकआउट

`brute` मोड तय करता है कि 5 विफलताओं के बाद क्या होता है:

* **ब्लॉक करें**: व्यक्ति को दोबारा साइन-इन करने से पहले अपना पासवर्ड रीसेट करना होगा।
* **चुनौती**: खाता 15 मिनट के लिए लॉक हो जाता है, और अगले प्रयास को एक अतिरिक्त प्रमाण चाहिए।
* **बंद** या **लॉग**: कोई लॉक नहीं।

ब्रूट-फ़ोर्स ब्लॉक के बाद पासवर्ड रीसेट उपलब्ध रहता है, और रीसेट लॉक को साफ़ कर देता है। आपकी टीम कंसोल से भी किसी खाते को अनलॉक कर सकती है।

यदि आपने सुरक्षा सेटिंग्स कभी सहेजी नहीं हैं, तो एक सरल नियम लागू होता है: 5 विफल पासवर्ड खाते को 15 मिनट के लिए लॉक कर देते हैं।

### बॉट स्कोर और डिवाइस सिग्नल

रनटाइम कॉल पर इन हेडर के साथ डिवाइस सिग्नल भेजें। होस्टेड पेज ये हेडर आपके लिए भेजते हैं।

| हेडर | सामग्री |
| - | - |
| `X-Didit-PID` | एक स्थायी डिवाइस ID, `A-Z a-z 0-9 . _ : -` के 8 से 128 अक्षर। |
| `X-Didit-FP-Hash` | एक डिवाइस फ़िंगरप्रिंट। |
| `X-Didit-FP-Bot-Score` | 0 से 1 के बीच का बॉट स्कोर। इस सीमा के बाहर के मान अनदेखे कर दिए जाते हैं। |

ये सिग्नल निर्णय के लिए संदर्भ हैं, पहचान का प्रमाण नहीं। ये हर [साइन-इन इवेंट](https://docs.didit.me/hi/authentication/events-and-webhooks.md) के साथ भी जाते हैं, जहाँ नियम `event.device.bot_score` पढ़ सकते हैं।

> [!NOTE]
>
> `AUTOMATION_FRAMEWORK_DETECTED` एक अलग जाँच है। यह **सत्यापन सत्र** पर [IP और डिवाइस विश्लेषण चेतावनी](https://docs.didit.me/hi/core-technology/ip-analysis/warnings-ip-analysis.md) है, जो तब उठती है जब सत्यापन SDK ब्राउज़र ऑटोमेशन फ़्रेमवर्क की रिपोर्ट करता है। यह साइन-इन पर नहीं चलती। साइन-इन पर स्वचालन को ऊपर दी गई `bots` नीति पकड़ती है।

## चुनौतियाँ

चुनौती वाला प्रयास साइन-इन कोड के बजाय यह लौटाता है:

```json theme={null}
{
  "protection_required": true,
  "challenge": "...",
  "methods": ["passkey", "email_code"],
  "options": { "...": "WebAuthn options when a passkey is offered" },
  "expires_in": 300
}
```

इसे `POST protection/complete/` से पूरा करें:

* `{"challenge", "method": "email_code", "code"}` के साथ, व्यक्ति के ईमेल पर भेजा गया 6-अंकों का कोड, या
* `{"challenge", "method": "passkey", "response"}` के साथ, WebAuthn रिस्पॉन्स।

आपको 5 मिनट के भीतर 5 प्रयास मिलते हैं। यदि व्यक्ति के पास कोई उपलब्ध प्रमाण नहीं है, तो कॉल `403 {"error": "protection_factor_unavailable"}` लौटाती है।

## लीक हुए पासवर्ड

`breached_password_check: true` के साथ, Didit नए और रीसेट किए गए पासवर्ड की जाँच ज्ञात लीक पासवर्ड से करता है। पासवर्ड स्वयं कहीं भी नहीं भेजा जाता। लीक पासवर्ड `password_breached` के साथ अस्वीकार किया जाता है। साइन-इन पर, लीक पासवर्ड `stuffing` मिलान गिना जाता है। यदि जाँच उपलब्ध नहीं है, तो पासवर्ड स्वीकार कर लिया जाता है।

## अटैक मोड

सक्रिय हमले के दौरान अटैक मोड चालू करें:

* `POST protection/attack-mode/` `{"duration_hours": 1}` के साथ (या `6` या `24`) `201` लौटाता है।
* `DELETE protection/attack-mode/` इसे समय से पहले समाप्त करता है। अवधि के बाद यह अपने आप भी समाप्त हो जाता है।

अटैक मोड चालू होने पर:

* हर साइन-अप और साइन-इन को **पासकी** चुनौती पास करनी होगी। ईमेल कोड स्वीकार नहीं होता। नए साइन-अप और जिन लोगों के पास पासकी नहीं है, वे अटैक मोड समाप्त होने तक पूरा नहीं कर सकते।
* VPN, Tor या डेटा-सेंटर नेटवर्क से साइन-अप ब्लॉक कर दिया जाता है।

## रेट लिमिट

हर रनटाइम रूट IP और एप्लिकेशन के अनुसार सीमित है:

| रूट | प्रति मिनट | प्रति घंटा |
| - | - | - |
| डिस्कवरी और JWKS | 1,200 | 12,000 |
| रनटाइम API और होस्टेड पेज | 30 | 300 |
| ईमेल कोड, फ़ोन कोड और प्रदाता कॉलबैक | 5 | 20 |

सीमा से अधिक होने पर, कॉल `429` लौटाती है। जब `Retry-After` हेडर भेजा जाए, तो उसका पालन करें। साइन-इन प्रयास भी प्रति मिनट सीमित हैं: प्रति IP 60, प्रति खाता 15, प्रति डिवाइस 30, प्रति एप्लिकेशन 3,000, और प्रति फ़ोन-नंबर प्रीफ़िक्स 20 SMS या WhatsApp कोड अनुरोध। टोकन रीफ़्रेश की एप्लिकेशन बकेट अलग है, प्रति मिनट 6,000, ताकि रीफ़्रेश कभी आपके साइन-इन का उपयोग न करें।

## इवेंट

हर निर्णय एक [प्रमाणीकरण इवेंट](https://docs.didit.me/hi/authentication/events-and-webhooks.md) के रूप में दर्ज होता है: `risk_logged`, `attempt_challenged`, `attempt_blocked`, `challenge_passed`, `challenge_failed`, `attack_mode_started` और `attack_mode_ended`। इवेंट दिखाता है कि कौन सी नीति मेल खाई।

## परीक्षण करें

सैंडबॉक्स एप्लिकेशन में, हर मोड का परीक्षण करें जो आप चालू करते हैं: एक ब्लॉक किया गया प्रयास, एक सफल और एक विफल चुनौती, एक लॉकआउट और उसका रीसेट, और अटैक मोड चालू और बंद। अपने UI में त्रुटियाँ सामान्य रखें, ताकि वे यह न बताएँ कि कोई खाता मौजूद है या नहीं।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.