Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
django-defender — Um aplicativo Django reutilizável simples e super rápido que impede tentativas de login por força bruta. | Kitploit
Ferramentas/GitHubGitHub/jazzband/django-defender
Ferramentas DefensivasAtaques de SenhaSegurança WebAutenticação
GitHubjazzband/django-defender

django-defender

Um aplicativo Django reutilizável simples e super rápido que impede tentativas de login por força bruta.

Ver Repositório
1.1k14428há 8 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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: Versões Python suportadas :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: Versões Django suportadas

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

.. image:: https://readthedocs.org/projects/django-defender/badge/?version=latest :alt: Status da Documentação :target: https://django-defender.readthedocs.io/en/latest/?badge=latest

Um aplicativo Django reutilizável simples que bloqueia tentativas de login por força bruta. O objetivo é tornar isso o mais rápido possível, para não atrasar as tentativas de login.

Usaremos um cache para que não precise acessar o banco de dados a cada tentativa de login. A primeira versão será baseada em Redis, mas o objetivo é tornar isso configurável para que as pessoas possam usar o backend que melhor atender às suas necessidades.

Sites que usam django-defender

Se você estiver usando defender no seu site, envie um PR para adicionar à lista.

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

Documentação

A documentação está disponível no Read the Docs:

https://django-defender.readthedocs.io

Funcionalidades

  • Registrar todas as tentativas de login no banco de dados

  • Suporte para proxies reversos com diferentes cabeçalhos para endereços IP

  • Limitação de taxa baseada em

    • Nome de usuário
    • Endereço IP
  • Usar Redis para a lista de bloqueio

  • Configuração

    • Servidor Redis

      • Host
      • Porta
      • Banco de dados
      • Senha
      • Prefixo da chave
    • Duração do bloqueio

    • Número de tentativas incorretas antes do bloqueio

  • 95% de cobertura de código

  • Documentação completa

  • Capacidade de armazenar tentativas de login no banco de dados

  • Comando de gerenciamento para limpar a tabela de tentativas de login

  • Páginas de administração

    • Lista de nomes de usuário e endereços IP bloqueados
    • Lista de tentativas de login recentes
    • Capacidade de desbloquear pessoas
  • Pode ser facilmente adaptado para método de autenticação personalizado.

  • Sinais são enviados ao bloquear nome de usuário ou IP

Páginas de Administração


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

Requisitos

  • 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

Instalação

Baixe o código e execute a configuração de uma das seguintes maneiras, dependendo do método.

Para instalar a versão pronta para produção do PyPI:

.. code-block:: bash

pip install django-defender

Para instalar a versão de desenvolvimento a partir do código-fonte após o download:

.. code-block:: bash

python setup.py install

Para instalar a versão de desenvolvimento do branch master do repositório GitHub:

.. code-block:: bash

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

Primeiro, você deve adicionar este projeto à sua lista de INSTALLED_APPS no settings.py

.. code-block:: python

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

Em seguida, instale o 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 você deseja gerenciar os usuários bloqueados através do admin do Django, adicione o seguinte ao seu urls.py

.. code-block:: python

urlpatterns = [ path('admin/defender/', include('defender.urls')), # admin do defender path('admin/', admin.site.urls), # admin normal # seus próprios padrões seguem... ]

Migrações


Você precisará criar tabelas no banco de dados que são necessárias para a operação.

.. code-block:: bash

python manage.py migrate defender

Comandos de gerenciamento


cleanup_django_defender

Se você tem um site com muito tráfego, a tabela AccessAttempts encherá rapidamente. Se você não precisa manter os dados para fins de auditoria, existe um comando de gerenciamento para ajudar a mantê-la limpa.

Ele olhará para sua configuração DEFENDER_ACCESS_ATTEMPT_EXPIRATION para determinar quais registros serão excluídos. O padrão, se não especificado, é 24 horas.

.. code-block:: bash

$ python manage.py cleanup_django_defender

Você pode configurar isso como uma tarefa cron diária ou semanal para manter o tamanho da tabela reduzido.

.. code-block:: bash

executar às 12:24 AM todas as manhãs.

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

Objetivos de longo prazo

  • Backends plugáveis, para que as pessoas possam usar algo diferente de Redis
  • Enviar e-mail para usuários quando suas contas forem bloqueadas
  • Adicionar uma lista de permissão para nomes de usuário e IPs que nunca serão bloqueados (administradores, etc.)
  • Adicionar uma lista negra permanente para endereços IP
  • Verificar IPs de proxy conhecidos e não bloquear requisições vindas deles (melhorar as chances de que um IP bom seja bloqueado)
  • Adicionar comando de gerenciamento para excluir tentativas de login antigas (configuráveis).

Desempenho


O objetivo do defender é torná-lo o mais rápido possível para não atrasar o processo de login. Para garantir que nossas metas sejam alcançadas, precisamos de uma maneira de testar a aplicação para garantir que estamos no caminho certo. A melhor maneira de fazer isso é comparar a velocidade de um login normal do Django com defender e django-axes.

O login normal do Django seria nossa linha de base, e esperamos que seja o mais rápido dos 3 métodos, pois não há verificações adicionais.

O login com defender provavelmente será mais lento que o login do Django, e esperamos que seja mais rápido que o login com django-axes. O objetivo é que a diferença entre o login bruto regular e o defender seja a menor possível.

A velocidade do login com django-axes provavelmente será a mais lenta dos três, pois faz mais verificações e muitas consultas ao banco de dados.

A melhor maneira de determinar a velocidade de um login é fazer um teste de carga contra uma aplicação com cada configuração e comparar os tempos de login para cada tipo.

Teste de carga


Para garantir que cubramos todos os diferentes tipos de login, em nosso teste de carga precisamos ter mais de um teste.

#. Todos com sucesso: Faremos um teste de carga com apenas logins bem-sucedidos.

Baixar ferramenta