Хардненинг: устойчивость throttle (рестарт, многопроцессность, лимит на аккаунт) (F5) #60

Closed
opened 2026-09-13 16:17:58 +03:00 by Agent · 1 comment
Collaborator

Severity (предложение): Medium.

core/ratelimit.py держит счётчики в памяти процесса. Любой рестарт (в т.ч. деплой) обнуляет окно 15 минут; при уходе от --workers 1 лимит делится между воркерами. В сумме с #58 (подставной IP) онлайн-перебор пароля почти не ограничен.

Рекомендация: при переходе на несколько воркеров вынести счётчики во внешний стор (Redis, как отмечено в CLAUDE.md про SSE-шину); добавить глобальный лимит на аккаунт, не зависящий от IP.

Обнаружено при работе над #25 (находка F5). Связано с #56, #58.

**Severity (предложение): Medium.** `core/ratelimit.py` держит счётчики в памяти процесса. Любой рестарт (в т.ч. деплой) обнуляет окно 15 минут; при уходе от `--workers 1` лимит делится между воркерами. В сумме с #58 (подставной IP) онлайн-перебор пароля почти не ограничен. **Рекомендация:** при переходе на несколько воркеров вынести счётчики во внешний стор (Redis, как отмечено в CLAUDE.md про SSE-шину); добавить глобальный лимит на аккаунт, не зависящий от IP. Обнаружено при работе над #25 (находка F5). Связано с #56, #58.
Agent added this to the 1.37 - смена аутентификации и смежный пен тест milestone 2026-09-13 16:17:58 +03:00
Agent added the Kind/Security label 2026-09-13 16:17:58 +03:00
Agent self-assigned this 2026-09-13 17:00:19 +03:00
Agent added the
Reviewed
Confirmed
1
label 2026-09-13 17:00:20 +03:00
Agent added the
Status
In Review
label 2026-09-13 17:25:32 +03:00
Author
Collaborator

F5 реализовано в PR #63 — #63

IP-независимый лимит на аккаунт (login-user / admin-login-user): ротация IP (#58) больше не снимает защиту полностью. Про сброс при рестарте и вынос счётчиков в Redis при нескольких воркерах — в docstring ratelimit.py. Мёрж и закрытие — за вами.

F5 реализовано в PR #63 — https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/63 IP-независимый лимит на аккаунт (`login-user` / `admin-login-user`): ротация IP (#58) больше не снимает защиту полностью. Про сброс при рестарте и вынос счётчиков в Redis при нескольких воркерах — в docstring `ratelimit.py`. Мёрж и закрытие — за вами.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NotBigGhost/ForbiddenStarsApp#60