Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2023, 07:45
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Атака на WebSocket! Как обойти?
Для меня WebSocket всегда был нечто передовым и инновационным. Отправляешь всего 1 запрос на сервер и он устанавливает соединение, через которое данные передаются в реальном времени.

Но мне стало интересно что произойдёт, если я или кто-то другой захочет поиграться и, например, запустить цикл for на 1_000_000 итераций и в каждой отправлять сообщение на сервер?

Не долго думая, мой ноут начал чуть ли не взлетать от взвинченных кулеров, а WebSocket-сервер покорно трудился над поставленной задачей.

Nginx, выступая в качестве прокси-сервера, как бы сказал "пока!", потому что запрос-то всего один был — при установлении соединения. Он даже не может влиять на лимит скорости в этом Web-Socket-соединении...

На просторах интернета совершенно нет никакой информации о каком-либо лимитировании в веб-сокетах...

И вот казалось бы — когда разрабатывали стандарт, неужели было сложно добавить пару заголовков на установление лимитов скорости, размера передаваемых сообщений, количества сообщений в единицу времени? Чтоб прямо из браузера низя было делать а-та-та?

Есть ли какое-то решение для установления ограничений в WebSocket на стороне клиента? И как вообще теперь с этим жить...

const socket = new WebSocket("ws://localhost:8081");

let message = '';

socket.onopen = function() {
    for(let i = 0; i < 1_000_000; i++) {
        message += '1234567890';
        socket.send(message);
    }
}

Последний раз редактировалось webgraph, 22.05.2023 в 09:52.
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2023, 22:11
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Ограничения на кол-во сообщений/обращений должно быть на стороне сервера, не клиента.
Без rate limiter'а не стороне сервера подобные ограничения на стороне клиента - как дверь в открытом поле.

В http3, я почему то уверен, подобных заголовков тоже нет, если не считать 429 status code за оные.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить результат от ajax запроса (из отдельного файла) 1Feniks1 AJAX и COMET 0 12.03.2017 18:45
Как обойти обнуление прокрутки при добавлении нового DOM-узла? webantip Общие вопросы Javascript 3 07.04.2014 16:59
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как обойти overflow-x в IE6 AlexMak (X)HTML/CSS 2 26.11.2010 14:52
Масштабирование браузером - как обойти? Sandr Internet Explorer 7 25.04.2009 01:44