File tree Expand file tree Collapse file tree 2 files changed +5
-6
lines changed
Expand file tree Collapse file tree 2 files changed +5
-6
lines changed Original file line number Diff line number Diff line change 11"""Password hashing/verify helpers.
22
3- - Argon2id — рекомендуемый вариант для паролей (устойчив к GPU, без утечек по времени) .
4- - Параметры берём из конфигурации (.env), чтобы их можно было тюнить под железо без правки кода .
5- - Хеширование/ проверка отправляем в threadpool, чтобы не блокировать event loop.
6- - Ограничиваем максимальную длину пароля как простую защиту от DoS сверхдлинными строками .
3+ - Используем Argon2id для хеширования паролей .
4+ - Параметры берём из конфигурации (.env).
5+ - Хеширование и проверка идут в threadpool, чтобы не блокировать event loop.
6+ - Ограничиваем максимальную длину пароля.
77"""
88
99import logging
Original file line number Diff line number Diff line change @@ -45,8 +45,7 @@ async def authenticate_user(
4545 """Проверяет email + пароль. Возвращает пользователя или None если данные неверны."""
4646 with tracer .start_as_current_span ("auth.authenticate_user" ):
4747 user = await user_repo .get_user_by_email (session , email )
48- # Всегда прогоняем Argon2, даже если email не найден — защита от тайминг-атаки.
49- # Без этого атакующий может по времени ответа определить, существует ли email.
48+ # Проверяем хэш всегда, чтобы не выдавать существование email по времени ответа.
5049 hashed = user .hashed_password if user else get_dummy_hash ()
5150 if not await verify_password (password = password , hashed_password = hashed ):
5251 return None
You can’t perform that action at this time.
0 commit comments