- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
def auth_2FA(request):
mail = request.POST.get('mail')
user = User.objects.get(email=mail)
code2FA = request.POST.get('code2FA')
if pyotp.TOTP(user.secret).verify(code2FA):
auth.login(request, user)
return redirect(settings.HOME_PAGE)
else:
...
так?
Лезем в код
Чтобы его перебрать, надо остановить часы (или успеть переебать все варианты в течение окна), чтобы его подгадать, нужно знать пользовательский секрет. По-хорошему действительно уже на второй-третьей попытке надо блокировать вход в течение окна, но джанга же всё равно столько рпс не выдержит, чтобы подобрать.
> пароль не проверяется.
А как он блядь должен проверяться, если это отдельный запрос? Различные факторы в том числе должны быть изолированы друг от друга, чтобы подглядев один хуемышленник не подглядел сразу всё. Подозреваю, что до этого кода просто не дойдет, если не стоит сессия, созданная в результате ввода пароля.
Но выходит, что не надо знать пароль. Достаточно знать mail и код двуфакторки и отправить post запрос
Или просто начать новое окно когда старое протухнет...
В общем-то за миллион-другой попыток что с окном что без окна что-нибудь подберётся чисто по теории вероятностей. Тлен и безысходность если попытки не троттлить.