fix(tradein/auth): лимит попыток входа 5 → 20 на адрес — офис за одним NAT запирал сам себя #3132

Merged
lekss361 merged 1 commit from fix/login-rate-limit-office-nat into main 2026-08-27 10:51:11 +00:00

View file

@ -105,7 +105,16 @@ class Settings(BaseSettings):
auth_mode: Literal["dual", "db_only"] = Field(default="dual", validation_alias="AUTH_MODE")
# Rate-limit на /login: не более login_rate_limit попыток за
# login_rate_limit_window_s секунд на ключ (обычно IP или username).
login_rate_limit: int = Field(default=5, validation_alias="LOGIN_RATE_LIMIT")
#
# 27.08: было 5. Пилот «Практика» — ОФИС, все сотрудники выходят из-под
# одного NAT, то есть пять попыток делились на всю компанию сразу. Хватило
# одного человека, перепутавшего пароль, чтобы запереть остальных: «Слишком
# много попыток» получали те, кто вообще ещё не пробовал войти.
#
# Защита от перебора при этом не ослабевает: настоящий предохранитель —
# login_username_fail_threshold (счёт по ЛОГИНУ, 20 за час), и он не тронут.
# Лимит по адресу нужен против всплеска с одной машины, а не против офиса.
login_rate_limit: int = Field(default=20, validation_alias="LOGIN_RATE_LIMIT")
login_rate_limit_window_s: int = Field(
default=300, validation_alias="LOGIN_RATE_LIMIT_WINDOW_S"
)