Я реализовал свой собственный SessionHandlerInterface, который читает/записывает пользовательские сеансы и постоянные сеансы на сервер Redis. Срок действия файла cookie сеанса пользователя истекает в момент закрытия браузера, поэтому связанный сеанс Redis необходимо очистить. Я могу убрать это, установив срок действия, например, 30 минут, что приведет к тому, что пользователь будет получать новый сеанс очень 30 минут без прерывания из-за наличия постоянного сеанса. Когда пользователь входит в систему, я автоматически создаю постоянный файл cookie, который позволяет ему войти в систему в течение нескольких месяцев.
Как предотвратить D/DoS-атаку, когда пользователь программно получает файл cookie сеанса пользователя и/или постоянный файл cookie, удаляет его и продолжает запрашивать и удалять файл cookie в течение неопределенного времени? По сути, создание бесконечного количества потерянных пользователей или постоянных сеансов в Redis, которые в конечном итоге будут очищены. Даже если я уменьшу срок действия файлов cookie сеанса до 1 минуты, чтобы несколько снизить риск, это все равно оставит постоянную проблему с файлами cookie, когда срок их действия не истекает в течение нескольких месяцев. Это может легко привести к сбою моего менеджера сеансов и помешать всем пользователям войти в систему.
Я знаю, что брандмауэры имеют встроенные решения для этого, однако мне интересно, как эту атаку можно смягчить на уровне приложений.
Эта проблема поднималась ранее: Потерянные записи управления сеансами в базе данных. Как справиться с проблемой? Риск стабильности БД