> ## 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"}`. |

## إعداد الحماية

اقرأ الإعدادات وعدّلها باستخدام `GET` و`PATCH` على `protection/` في واجهة برمجة تطبيقات إدارة المصادقة الخاصة بتطبيقك، أو من وحدة التحكم.

```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 واحد الوصول إلى 10 حسابات مختلفة أو أكثر خلال 15 دقيقة، أو تكون كلمة المرور من كلمات المرور المسرّبة المعروفة. |
| `brute` | للحساب 5 محاولات فاشلة أو أكثر. تُحتسب كلمات المرور الخاطئة ورموز البريد الإلكتروني والهاتف والمصادقة الخاطئة كلها. |
| `disposable` | يستخدم التسجيل نطاق بريد إلكتروني مؤقتًا. |
| `vpn` | يعود عنوان IP إلى شبكة VPN أو Tor أو مركز بيانات. |
| `travel` | يبعد تسجيل الدخول أكثر من 500 كم عن تسجيل الدخول السابق، بسرعة تتجاوز 1,000 كم/ساعة، خلال 24 ساعة. |

تستخدم سياستا `vpn` و`travel` تحليل عنوان IP من Didit. إذا كان هذا الاستعلام غير متاح، تستمر المحاولة؛ ولا يفشل تسجيل الدخول بسببه أبدًا. يتحدّث موقع `travel` فقط بعد اكتمال تسجيل الدخول.

### القوة الغاشمة والقفل

يحدد وضع `brute` ما يحدث بعد 5 محاولات فاشلة:

* **حظر**: يجب على الشخص إعادة تعيين كلمة مروره قبل أن يتمكن من تسجيل الدخول مرة أخرى.
* **تحدٍّ**: يُقفل الحساب لمدة 15 دقيقة، وتتطلب المحاولة التالية إثباتًا إضافيًا.
* **غير مُفعّل** أو **تسجيل**: لا يُقفل الحساب.

تبقى إعادة تعيين كلمة المرور متاحة بعد حظر القوة الغاشمة، وتُلغي إعادة التعيين القفل. ويمكن لفريقك أيضًا فك قفل الحساب من وحدة التحكم.

إذا لم تحفظ إعدادات الحماية من قبل، فينطبق قاعدة أبسط: 5 كلمات مرور خاطئة تقفل الحساب لمدة 15 دقيقة.

### درجة الروبوت وإشارات الجهاز

أرسل إشارات الجهاز في استدعاءات وقت التشغيل باستخدام هذه الرؤوس. تُرسلها الصفحات المستضافة نيابةً عنك.

| الرأس | المحتوى |
| - | - |
| `X-Didit-PID` | معرّف جهاز دائم، من 8 إلى 128 حرفًا من `A-Z a-z 0-9 . _ : -`. |
| `X-Didit-FP-Hash` | بصمة الجهاز. |
| `X-Didit-FP-Bot-Score` | درجة روبوت من 0 إلى 1. تُتجاهل القيم خارج هذا النطاق. |

هذه الإشارات سياق لاتخاذ القرار، وليست دليلًا على الهوية. وتُرسل أيضًا مع كل [حدث تسجيل دخول](https://docs.didit.me/ar/authentication/events-and-webhooks.md)، حيث يمكن للقواعد قراءة `event.device.bot_score`.

> [!NOTE]
>
> `AUTOMATION_FRAMEWORK_DETECTED` فحص مختلف. وهو [تحذير تحليل الجهاز وعنوان IP](https://docs.didit.me/ar/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 |
| واجهة برمجة وقت التشغيل والصفحات المستضافة | 30 | 300 |
| رموز البريد الإلكتروني ورموز الهاتف واستدعاءات المزوّدين | 5 | 20 |

عند تجاوز الحد، يعيد الاستدعاء `429`. التزم بالرأس `Retry-After` عند إرساله. تُقيَّد محاولات تسجيل الدخول أيضًا في الدقيقة: 60 لكل عنوان IP، و15 لكل حساب، و30 لكل جهاز، و3,000 لكل تطبيق، و20 طلب رمز SMS أو WhatsApp لكل بادئة رقم هاتف. ولتحديثات token حدّها الخاص على مستوى التطبيق، 6,000 في الدقيقة، لذلك لا تستهلك عمليات تحديث الرموز محاولات تسجيل الدخول الخاصة بك.

## الأحداث

يُسجَّل كل قرار كـ[حدث مصادقة](https://docs.didit.me/ar/authentication/events-and-webhooks.md): `risk_logged` و`attempt_challenged` و`attempt_blocked` و`challenge_passed` و`challenge_failed` و`attack_mode_started` و`attack_mode_ended`. يُظهر الحدث السياسة التي تطابقت.

## الاختبار

في تطبيق داخل البيئة التجريبية، اختبر كل وضع تفعّله: محاولة محظورة، وتحدٍّ ناجح وآخر فاشل، وقفل وإعادة تعيينه، ووضع الهجوم مفعّلًا ومعطّلًا. اجعل رسائل الخطأ عامة في واجهتك حتى لا تكشف ما إذا كان الحساب موجودًا.


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