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
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`. Мёрж и закрытие — за вами.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity (предложение): Medium.
core/ratelimit.pyдержит счётчики в памяти процесса. Любой рестарт (в т.ч. деплой) обнуляет окно 15 минут; при уходе от--workers 1лимит делится между воркерами. В сумме с #58 (подставной IP) онлайн-перебор пароля почти не ограничен.Рекомендация: при переходе на несколько воркеров вынести счётчики во внешний стор (Redis, как отмечено в CLAUDE.md про SSE-шину); добавить глобальный лимит на аккаунт, не зависящий от IP.
Обнаружено при работе над #25 (находка F5). Связано с #56, #58.
F5 реализовано в PR #63 — #63
IP-независимый лимит на аккаунт (
login-user/admin-login-user): ротация IP (#58) больше не снимает защиту полностью. Про сброс при рестарте и вынос счётчиков в Redis при нескольких воркерах — в docstringratelimit.py. Мёрж и закрытие — за вами.