- 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:
...
Soul_recOver 01.03.2023 12:32 # +1
Doorman5302 01.03.2023 13:04 # 0
hormand 08.03.2023 20:10 # 0
Stallman 02.03.2023 12:11 # 0
CTOMATOJlOr 02.03.2023 22:16 # 0
guesf6 02.03.2023 22:18 # 0
так?
HOBOKAuH 03.03.2023 13:07 # −1
Fike 02.03.2023 12:54 # 0
Лезем в код
Чтобы его перебрать, надо остановить часы (или успеть переебать все варианты в течение окна), чтобы его подгадать, нужно знать пользовательский секрет. По-хорошему действительно уже на второй-третьей попытке надо блокировать вход в течение окна, но джанга же всё равно столько рпс не выдержит, чтобы подобрать.
> пароль не проверяется.
А как он блядь должен проверяться, если это отдельный запрос? Различные факторы в том числе должны быть изолированы друг от друга, чтобы подглядев один хуемышленник не подглядел сразу всё. Подозреваю, что до этого кода просто не дойдет, если не стоит сессия, созданная в результате ввода пароля.
Doorman5302 02.03.2023 14:30 # 0
Но выходит, что не надо знать пароль. Достаточно знать mail и код двуфакторки и отправить post запрос
Fike 02.03.2023 17:55 # 0
Doorman5302 03.03.2023 13:32 # 0
bormand 08.03.2023 13:47 # +1
Или просто начать новое окно когда старое протухнет...
В общем-то за миллион-другой попыток что с окном что без окна что-нибудь подберётся чисто по теории вероятностей. Тлен и безысходность если попытки не троттлить.