Защита сервера django от атаки WebSocket Flood

У меня есть приложение на django, которое работает следующим образом -<2>>: пользователь посредством ajax-запроса загружает на сервер файл для обработки -> создается задача celery для обработки этого файла -> пользователь получает ответ в виде некоторого уникального ключа -> пользователь устанавливает websocket-соединение с сервером, используя этот ключ (на его основе создается имя комнаты) -> когда обработка файла будет завершена, сервер отправит сообщение в комнату по ключу, а на клиенте, если он получил сообщение, соединение будет закрыто.

Урл для подключения через websocket выглядит следующим образом - ws/download_result/<str:key>/

Также я храню ключи, по которым устанавливается websocket-соединение, в базе данных, и поэтому, когда кто-то пытается установить стороннее соединение (если он не был на сайте и не отдавал файл на обработку и соответственно нет ключа - ведь при обработке каждого файла создается новый ключ - для того, чтобы через него можно было подключиться к серверу и получить результат), то я могу проверить, существует ли такой ключ в базе данных или нет, и если нет, то отклонить запрос на соединение. Ключи хранятся в базе данных в течение 1 часа.

Но у меня есть проблема - как защитить сервер от злоумышленника, который попытается создать множество соединений с помощью одного или нескольких валидных ключей (валидных урлов для соединений)?

Вернуться на верх