Skip to content
KitploitKITPLOIT
أدواتالمدونة
Log in
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
django-defender — تطبيق Django بسيط وسريع جداً وقابل لإعادة الاستخدام يمنع الأشخاص من هجمات القوة الغاشمة على تسجيل الدخول. | Kitploit
أدوات/GitHubGitHub/jazzband/django-defender
أدوات دفاعيةهجمات كلمات المرورأمن الويبالمصادقة
GitHubjazzband/django-defender

django-defender

تطبيق Django بسيط وسريع جداً وقابل لإعادة الاستخدام يمنع الأشخاص من هجمات القوة الغاشمة على تسجيل الدخول.

عرض المستودع
1.1k14428منذ 8 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

django-defender

.. image:: https://jazzband.co/static/img/badge.svg :target: https://jazzband.co/ :alt: Jazzband

.. image:: https://img.shields.io/pypi/pyversions/django-defender.svg :alt: Supported Python versions :target: https://pypi.org/project/django-defender/

.. image:: https://img.shields.io/pypi/djversions/django-defender.svg :target: https://pypi.org/project/django-defender/ :alt: Supported Django versions

.. image:: https://github.com/jazzband/django-defender/workflows/Test/badge.svg :target: https://github.com/jazzband/django-defender/actions :alt: GitHub Actions

.. image:: https://codecov.io/gh/jazzband/django-defender/branch/master/graph/badge.svg :target: https://codecov.io/gh/jazzband/django-defender :alt: Coverage

.. image:: https://readthedocs.org/projects/django-defender/badge/?version=latest :alt: Documentation Status :target: https://django-defender.readthedocs.io/en/latest/?badge=latest

تطبيق Django قابل لإعادة الاستخدام بسيط يمنع محاولات تسجيل الدخول القسرية (Brute Force). الهدف هو جعله بأسرع ما يمكن، حتى لا نبطئ محاولات تسجيل الدخول.

سنستخدم ذاكرة تخزين مؤقت (Cache) بحيث لا نضطر لمراجعة قاعدة البيانات عند كل محاولة دخول. الإصدار الأول سيعتمد على Redis، لكن الهدف هو جعل ذلك قابلاً للتكوين بحيث يمكن للمستخدمين استخدام أي خلفية تناسب احتياجاتهم.

المواقع التي تستخدم django-defender

إذا كنت تستخدم defender على موقعك، فيرجى تقديم طلب Pull Request لإضافته إلى القائمة.

  • https://hub.docker.com
  • https://www.mycosbuilder.com

التوثيق

التوثيق متاح على Read the Docs:

https://django-defender.readthedocs.io

الميزات

  • تسجيل جميع محاولات تسجيل الدخول في قاعدة البيانات

  • دعم للبروكسيات العكسية (Reverse Proxies) مع رؤوس مختلفة لعناوين IP

  • تحديد معدل المحاولات بناءً على

    • اسم المستخدم
    • عنوان IP
  • استخدام Redis في القائمة السوداء

  • إعدادات

    • خادم Redis

      • المضيف
      • المنفذ
      • قاعدة البيانات
      • كلمة المرور
      • بادئة المفاتيح
    • مدة الحظر

    • عدد المحاولات الخاطئة قبل الحظر

  • تغطية 95% للكود

  • توثيق كامل

  • إمكانية تخزين محاولات تسجيل الدخول في قاعدة البيانات

  • أمر إداري لتنظيف جدول محاولات تسجيل الدخول

  • صفحات إدارة

    • قائمة بأسماء المستخدمين وعناوين IP المحظورة
    • قائمة بمحاولات تسجيل الدخول الأخيرة
    • إمكانية فك الحظر عن المستخدمين
  • يمكن تكييفه بسهولة مع طريقة المصادقة المخصصة.

  • يتم إرسال إشارات (Signals) عند حظر اسم المستخدم أو عنوان IP

صفحات الإدارة


.. image:: https://cloud.githubusercontent.com/assets/261601/5950540/8895b570-a729-11e4-9dc3-6b00e46c8043.png :target: https://cloud.githubusercontent.com/assets/261601/5950540/8895b570-a729-11e4-9dc3-6b00e46c8043.png :alt: alt tag

.. image:: https://cloud.githubusercontent.com/assets/261601/5950541/88a35194-a729-11e4-981b-3a55b44ef9d5.png :target: https://cloud.githubusercontent.com/assets/261601/5950541/88a35194-a729-11e4-981b-3a55b44ef9d5.png :alt: alt tag

المتطلبات

  • Python: 3.8, 3.9, 3.10, 3.11, 3.12, PyPy
  • Django: 3.2, 4.2, 5.0, 5.1, 5.2
  • Redis: 5.x, 6.x, 7.x

التثبيت

قم بتنزيل الكود، ثم قم بتشغيل الإعداد بإحدى الطرق التالية حسب الطريقة.

لتثبيت الإصدار الجاهز للإنتاج من PyPI:

.. code-block:: bash

pip install django-defender

لتثبيت الإصدار التطويري من الكود المصدري بعد التنزيل:

.. code-block:: bash

python setup.py install

لتثبيت الإصدار التطويري من الفرع الرئيسي من مستودع GitHub:

.. code-block:: bash

pip install -e git+http://github.com/kencochran django-defender.git#egg=django_defender-dev

أولاً، يجب إضافة هذا المشروع إلى قائمة INSTALLED_APPS في ملف settings.py

.. code-block:: python

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', # ... 'defender', # ... ]

بعد ذلك، قم بتثبيت وسيطة FailedLoginMiddleware

.. code-block:: python

MIDDLEWARE_CLASSES = [ 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'defender.middleware.FailedLoginMiddleware', ]

إذا كنت ترغب في إدارة المستخدمين المحظورين عبر واجهة Django الإدارية، فأضف التالي إلى ملف urls.py

.. code-block:: python

urlpatterns = [ path('admin/defender/', include('defender.urls')), # defender admin path('admin/', admin.site.urls), # normal admin # your own patterns follow... ]

الهجرات (Migrations)


ستحتاج إلى إنشاء جداول في قاعدة البيانات الخاصة بك ضرورية للتشغيل.

.. code-block:: bash

python manage.py migrate defender

الأوامر الإدارية


cleanup_django_defender

إذا كان لديك موقع ويب بحركة مرور عالية، فإن جدول AccessAttempts سيمتلئ بسرعة. إذا لم تكن بحاجة إلى الاحتفاظ بالبيانات لأغراض التدقيق، يوجد أمر إداري لمساعدتك في الحفاظ على نظافته.

سيتم النظر إلى إعداد DEFENDER_ACCESS_ATTEMPT_EXPIRATION لتحديد أي السجلات سيتم حذفها. الافتراضي إذا لم يتم التحديد، هو 24 ساعة.

.. code-block:: bash

$ python manage.py cleanup_django_defender

يمكنك ضبط هذا كوظيفة cron يومية أو أسبوعية للحفاظ على حجم الجدول صغيرًا.

.. code-block:: bash

run at 12:24 AM every morning.

24 0 * * * /usr/bin/python manage.py cleanup_django_defender >> /var/log/django_defender_cleanup.log

الأهداف طويلة المدى

  • خلفيات قابلة للتوصيل (Pluggable backends)، بحيث يمكن استخدام شيء آخر غير Redis
  • إرسال بريد إلكتروني للمستخدمين عند حظر حسابهم
  • إضافة قائمة بيضاء لأسماء المستخدمين وعناوين IP التي لن يتم حظرها أبدًا (المسؤولين، إلخ)
  • إضافة قائمة سوداء دائمة لعناوين IP
  • المسح بحثًا عن عناوين IP بروكسي معروفة وعدم حظر الطلبات القادمة من تلك العناوين (زيادة فرص عدم حظر عنوان IP جيد)
  • إضافة أمر إداري لاقتطاع محاولات تسجيل الدخول القديمة (القابلة للتكوين).

الأداء


الهدف من defender هو جعله بأسرع ما يمكن حتى لا يبطئ عملية تسجيل الدخول. من أجل التأكد من تحقيق أهدافنا، نحتاج إلى طريقة لاختبار التطبيق للتأكد من أننا على المسار الصحيح. أفضل طريقة للقيام بذلك هي مقارنة سرعة تسجيل الدخول العادي في Django مع defender و django-axes.

تسجيل الدخول العادي في Django سيكون خط الأساس، ونتوقع أن يكون الأسرع من بين الطرق الثلاث، لأنه لا توجد فحوصات إضافية.

تسجيل الدخول باستخدام defender سيكون على الأرجح أبطأ من Django، ونأمل أن يكون أسرع من django-axes. الهدف هو جعل الفرق صغيرًا قدر الإمكان بين تسجيل الدخول العادي واستخدام defender.

سرعة تسجيل الدخول باستخدام django-axes ستكون على الأرجح الأبطأ بين الثلاثة لأنه يقوم بمزيد من الفحوصات ويقوم بالعديد من استعلامات قاعدة البيانات.

أفضل طريقة لتحديد سرعة تسجيل الدخول هي إجراء اختبار تحميل على تطبيق مع كل إعداد، ومقارنة أوقات تسجيل الدخول لكل نوع.

اختبار التحميل


من أجل التأكد من تغطية جميع أنواع تسجيل الدخول المختلفة، في اختبار التحميل نحتاج إلى أكثر من اختبار واحد.

#. جميعها ناجحة: سنقوم باختبار تحميل لا يحتوي إلا على محاولات تسجيل دخول ناجحة.

#. مختلط: بعض الناجح وبعض الفاشل: سنقوم باختبار تحميل مع بعض محاولات الدخول الناجحة وبعضها الفاشلة لرؤية كيف تؤثر الفاشلة على الأداء.

#. جميعها فاشلة: سنقوم باختبار تحميل مع جميع محاولات تسجيل الدخول الفاشلة ورؤية الفرق في الأداء.

سنحتاج إلى تطبيق عينة يمكننا استخدامه لاختبار التحميل، مع الاختلاف الوحيد هو التكوين حيث نقوم إما بتحميل defender، أو axes، أو لا شيء منهما.

يمكننا استخدام خدمة اختبار تحميل مستضافة، أو شيء مثل jmeter. بأي طريقة، نحتاج إلى أن نكون متسقين لجميع الاختبارات. إذا استخدمنا jmeter، يجب أن يكون لدينا تكوين jmeter ليقوم الآخرون بتشغيل الاختبارات بأنفسهم.

نتائج اختبارات التحميل


سنقوم بنشر النتائج هنا. سنشرح كل اختبار، ونعرض النتائج مع بعض الرسوم البيانية.

لماذا لا django-axes

django-axes رائع لكنه يضع كل شيء في قاعدة البيانات، وهذا يسبب عنق زجاجة عندما يكون لديك الكثير من البيانات. إنه يبطئ طلبات المصادقة بمقدار 200-300 مللي ثانية. قد لا يكون هذا كثيرًا لبعض المواقع، لكنه كثير جدًا بالنسبة للآخرين.

تنزيل الأداة