Django как предотвратить атаку грубой силы, показывая капчу на странице входа после подсчета неудачных попыток?

Я знаю, что есть несколько пакетов, таких как django-defender, django-axes и т.д. для предотвращения атак грубой силы. Я думаю предотвратить атаку грубой силы путем показа капчи используя сессию Django (подсчет неудачных попыток входа) или что-то вроде этого без помощи какого-либо пакета . Я хочу подсчитывать неудачные попытки входа в систему в моих представлениях, тогда это будет показывать капчу после количества неудачных попыток входа. Так что это будет простой двухшаговый процесс:

шаг1) он подсчитает неудачные попытки входа.

шаг2) Он покажет капчу после нескольких неудачных попыток входа

вот мой views.py :

def login_view(request):
     if request.method == 'POST':
            username = request.POST.get('username')
            password =request.POST.get('password')
            user = authenticate(request, username=username, password=password)
            
            if user is not None:
                  login(request, user)
                  messages.add_message(request, messages.INFO,'Login Sucessfull')  
            else:
                  messages.info(request, "wrong username or password")

Ну, на самом деле, я бы посоветовал вам использовать django-axes, потому что это уменьшает половину нагрузки. Но если вы действительно хотите реализовать это самостоятельно, ваш вопрос имеет ответ сам по себе.

Введите подсчет сессий для попыток входа в систему. Если их больше одной, представьте капчу. Вы можете использовать django-simple-captcha или reCaptcha от Google или hCaptcha. Все это хорошие альтернативы. Все, что вам нужно сделать, это добавить поле в форму с именем captcha, и ваш код готов к работе.

Вернуться на верх