Безопасность в websockets. Возможно ли отфильтровать все соединения на уровне handshake и отключить атаки злоумышленника?

Как обезопасить соединение по ws?

1. Проверка origin.
Тем самым можно запретить подключаться с разных доменов, протоколов и тп

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

Как это сделать:
В любом браузере есть консоль. Зайдя в нее и находясь на разрешенной странице, можно создать через нее новое подключение и посылать пакеты вручную, тем самым завалить сервер, например, синтаксической атакой.

Как этого избежать?

Можно проверять каждое сообщение message. Такая проверка будет осуществляться для каждого пакета, каждого юзера. А если пакетов много (онлайн игра) и юзеров много, то это создает дополнительную нагрузку!
При это если проект опенсорсный, то всегда есть возможность покопаться в исходниках и наверняка найти дыру

Думаю самый правильный вариант - фильтровать соединения на момент рукопожатия (handshake).
Вот только как это сделать?
  • Вопрос задан
  • 3495 просмотров
Пригласить эксперта
Ответы на вопрос 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
В чем проблема то?
https://github.com/Worlize/WebSocket-Node
ws.on('request', function(request) {
    // filter here
    if (...) request.reject();
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы