Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
django-defender — Une application Django réutilisable simple et super rapide qui bloque les tentatives de connexion par force brute. | Kitploit
Outils/GitHubGitHub/jazzband/django-defender
Outils DéfensifsAttaques de Mots de PasseSécurité WebAuthentification
GitHubjazzband/django-defender

django-defender

Une application Django réutilisable simple et super rapide qui bloque les tentatives de connexion par force brute.

Voir le dépôt
1.1k14428il y a 8 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

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: Versions Python prises en charge :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: Versions Django prises en charge

.. 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: Couverture

.. image:: https://readthedocs.org/projects/django-defender/badge/?version=latest :alt: Statut de la documentation :target: https://django-defender.readthedocs.io/en/latest/?badge=latest

Une simple application Django réutilisable qui empêche les tentatives de connexion par force brute. L'objectif est de la rendre aussi rapide que possible, afin de ne pas ralentir les tentatives de connexion.

Nous utiliserons un cache pour éviter d'interroger la base de données à chaque tentative de connexion. La première version sera basée sur Redis, mais l'objectif est de rendre cela configurable afin que les utilisateurs puissent utiliser le backend qui correspond le mieux à leurs besoins.

Sites utilisant django-defender

Si vous utilisez defender sur votre site, soumettez une PR pour l'ajouter à la liste.

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

Documentation

La documentation est disponible sur Read the Docs :

https://django-defender.readthedocs.io

Fonctionnalités

  • Enregistrer toutes les tentatives de connexion dans la base de données

  • Support des proxys inverses avec différents en-têtes pour les adresses IP

  • Limitation de débit basée sur

    • Nom d'utilisateur
    • Adresse IP
  • Utilisation de Redis pour la liste noire

  • Configuration

    • Serveur Redis

      • Hôte
      • Port
      • Base de données
      • Mot de passe
      • Préfixe de clé
    • Durée du blocage

    • Nombre de tentatives incorrectes avant blocage

  • 95 % de couverture de code

  • Documentation complète

  • Capacité de stocker les tentatives de connexion dans la base de données

  • Commande de gestion pour nettoyer la table des tentatives de connexion

  • Pages d'administration

    • Liste des noms d'utilisateur et adresses IP bloqués
    • Liste des tentatives de connexion récentes
    • Possibilité de débloquer des personnes
  • Peut être facilement adapté à une méthode d'authentification personnalisée.

  • Des signaux sont envoyés lors du blocage d'un nom d'utilisateur ou d'une IP

Pages d'administration


.. 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

Prérequis

  • 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

Installation

Téléchargez le code et exécutez l'installation de l'une des manières suivantes selon la méthode.

Pour installer la version prête pour la production depuis PyPI :

.. code-block:: bash

pip install django-defender

Pour installer la version de développement à partir du code source après téléchargement :

.. code-block:: bash

python setup.py install

Pour installer la version de développement de la branche master depuis le dépôt GitHub :

.. code-block:: bash

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

Tout d'abord, vous devez ajouter ce projet à votre liste INSTALLED_APPS dans settings.py

.. code-block:: python

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

Ensuite, installez le middleware FailedLoginMiddleware

.. code-block:: python

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

Si vous souhaitez gérer les utilisateurs bloqués via l'administration Django, ajoutez ce qui suit à votre 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


Vous devrez créer les tables nécessaires dans votre base de données.

.. code-block:: bash

python manage.py migrate defender

Commandes de gestion


cleanup_django_defender

Si votre site web a beaucoup de trafic, la table AccessAttempts se remplira rapidement. Si vous n'avez pas besoin de conserver les données à des fins d'audit, une commande de gestion vous aide à la nettoyer.

Elle utilise le paramètre DEFENDER_ACCESS_ATTEMPT_EXPIRATION pour déterminer les enregistrements à supprimer. Par défaut, si non spécifié, la durée est de 24 heures.

.. code-block:: bash

$ python manage.py cleanup_django_defender

Vous pouvez configurer cette commande comme une tâche cron quotidienne ou hebdomadaire pour réduire la taille de la table.

.. code-block:: bash

exécuté à 00:24 chaque matin.

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

Objectifs à long terme

  • Backends enfichables, pour que les utilisateurs puissent utiliser autre chose que Redis
  • Envoyer un email aux utilisateurs lorsque leur compte est bloqué
  • Ajouter une liste blanche pour les noms d'utilisateur et ip qui ne seront jamais bloqués (administrateurs, etc.)
  • Ajouter une liste noire permanente pour les adresses IP
  • Analyser les IP de proxy connues et ne pas bloquer les requêtes provenant de celles-ci (améliorer les chances qu'une bonne IP ne soit pas bloquée)
  • Ajouter une commande de gestion pour supprimer les tentatives de connexion anciennes (configurables).

Performances


L'objectif de defender est d'être aussi rapide que possible afin de ne pas ralentir le processus de connexion. Pour vérifier que nos objectifs sont atteints, nous avons besoin d'un moyen de tester l'application. La meilleure façon est de comparer la rapidité d'une connexion Django normale avec defender et django-axes.

La connexion Django normale est notre base de référence, et nous nous attendons à ce qu'elle soit la plus rapide des trois méthodes, car il n'y a pas de vérifications supplémentaires.

La connexion avec defender sera probablement plus lente que la connexion Django, et nous espérons qu'elle sera plus rapide que la connexion avec django-axes. L'objectif est de minimiser la différence entre la connexion brute normale et defender.

La vitesse de connexion avec django-axes sera probablement la plus lente des trois car elle effectue plus de vérifications et beaucoup de requêtes en base de données.

La meilleure façon de déterminer la vitesse d'une connexion est d'effectuer un test de charge sur une application avec chaque configuration, et de comparer les temps de connexion pour chaque type.

Tests de charge


Télécharger l’outil