Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
django-defender — Un'app django riutilizzabile semplice e super veloce che blocca le persone dai tentativi di login con forza bruta. | Kitploit
Strumenti/GitHubGitHub/jazzband/django-defender
Strumenti DifensiviAttacchi alle PasswordSicurezza WebAutenticazione
GitHubjazzband/django-defender

django-defender

Un'app django riutilizzabile semplice e super veloce che blocca le persone dai tentativi di login con forza bruta.

Vedi Repository
1.1k144288 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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: Versioni Python supportate :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: Versioni Django supportate

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

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

Un'app riutilizzabile Django semplice che impedisce attacchi di forza bruta ai tentativi di login. L'obiettivo è renderla il più veloce possibile, per non rallentare i tentativi di accesso.

Utilizzeremo una cache in modo da non dover interrogare il database a ogni tentativo di login. La prima versione sarà basata su Redis, ma l'obiettivo è renderlo configurabile in modo che le persone possano usare il backend più adatto alle loro esigenze.

Siti che usano django-defender

Se usi defender sul tuo sito, invia una PR per aggiungerlo all'elenco.

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

Documentazione

La documentazione è disponibile su Read the Docs:

https://django-defender.readthedocs.io

Caratteristiche

  • Registra tutti i tentativi di login nel database

  • Supporto per proxy inversi con diverse intestazioni per gli indirizzi IP

  • Limite di frequenza basato su

    • Nome utente
    • Indirizzo IP
  • Usa Redis per la lista nera

  • Configurazione

    • Server Redis

      • Host
      • Porta
      • Database
      • Password
      • Prefisso chiave
    • Durata del blocco

    • Numero di tentativi errati prima del blocco

  • Copertura del codice al 95%

  • Documentazione completa

  • Possibilità di memorizzare i tentativi di login nel database

  • Comando di amministrazione per pulire la tabella dei tentativi di login

  • Pagine di amministrazione

    • Elenco di nomi utente e indirizzi IP bloccati
    • Elenco dei tentativi di login recenti
    • Possibilità di sbloccare le persone
  • Può essere facilmente adattato a metodi di autenticazione personalizzati.

  • Vengono inviati segnali quando si blocca un nome utente o un IP

Pagine di amministrazione


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

Requisiti

  • 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

Installazione

Scarica il codice ed esegui il setup in uno dei seguenti modi, a seconda del metodo.

Per installare la versione pronta per la produzione da PyPI:

.. code-block:: bash

pip install django-defender

Per installare la versione di sviluppo dal codice sorgente dopo il download:

.. code-block:: bash

python setup.py install

Per installare la versione di sviluppo del branch master dal repository GitHub:

.. code-block:: bash

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

Prima di tutto, devi aggiungere questo progetto alla tua lista di INSTALLED_APPS in settings.py

.. code-block:: python

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

Successivamente, installa il middleware FailedLoginMiddleware

.. code-block:: python

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

Se vuoi gestire gli utenti bloccati tramite l'amministrazione di Django, aggiungi quanto segue al tuo urls.py

.. code-block:: python

urlpatterns = [ path('admin/defender/', include('defender.urls')), # admin defender path('admin/', admin.site.urls), # admin normale # i tuoi pattern seguono... ]

Migrazioni


Dovrai creare le tabelle nel tuo database necessarie per il funzionamento.

.. code-block:: bash

python manage.py migrate defender

Comandi di gestione


cleanup_django_defender

Se hai un sito web con molto traffico, la tabella AccessAttempts si riempirà abbastanza rapidamente. Se non hai bisogno di conservare i dati a fini di audit, c'è un comando di gestione per aiutarti a mantenerla pulita.

Esaminerà l'impostazione DEFENDER_ACCESS_ATTEMPT_EXPIRATION per determinare quali record verranno eliminati. Il valore predefinito, se non specificato, è 24 ore.

.. code-block:: bash

$ python manage.py cleanup_django_defender

Puoi impostarlo come cron job giornaliero o settimanale per mantenere la dimensione della tabella ridotta.

.. code-block:: bash

eseguito alle 00:24 ogni mattina.

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

Obiettivi a lungo termine

  • Backend componibili, in modo che le persone possano usare qualcosa di diverso da Redis
  • Inviare email agli utenti quando il loro account viene bloccato
  • Aggiungere una whitelist per nomi utente e IP che non verranno mai bloccati (amministratori, ecc.)
  • Aggiungere una lista nera permanente per gli indirizzi IP
  • Scansionare per proxy IP conosciuti e non bloccare le richieste provenienti da quelli (migliorare le possibilità che un buon IP venga bloccato)
  • Aggiungere comando di gestione per eliminare i tentativi di login vecchi (configurabili).

Prestazioni


L'obiettivo di defender è renderlo il più veloce possibile in modo da non rallentare il processo di login. Per assicurarci di raggiungere i nostri obiettivi, abbiamo bisogno di un modo per testare l'applicazione e verificare di essere sulla strada giusta. Il modo migliore per farlo è confrontare la velocità di un normale login Django con defender e django-axes.

Il normale login Django sarebbe la nostra base di riferimento, e ci aspettiamo che sia il più veloce dei 3 metodi, perché non ci sono ulteriori controlli in corso.

Il login con defender sarà molto probabilmente più lento del login Django, e si spera più veloce del login django-axes. L'obiettivo è rendere la differenza il più piccola possibile tra il login normale e defender.

La velocità del login django-axes sarà probabilmente la più lenta dei tre poiché esegue più controlli e molte query al database.

Il modo migliore per determinare la velocità di un login è fare un test di carico contro un applicazione con ciascuna configurazione e confrontare i tempi di login per ogni tipo.

Test di carico


Per assicurarci di coprire tutti i diversi tipi di login, nel nostro test di carico dobbiamo avere più di un test.

#. Tutti successi: Eseguiremo un test di carico solo con login riusciti.

Scarica lo strumento