Запрет пользователям вызывать io () для создания новых соединений сокетов из консоли - PullRequest
2 голосов
/ 01 октября 2019

Я использую socket.io в проекте на основе браузера, где io () вызывается в коде на стороне клиента для запуска соединения через сокет с хост-сервером.

var socket = io();
socket.on('connect', () => {
    // ...
}

Проблема I 'Дело в том, что пользователь может легко открыть консоль и несколько раз вызвать io (), что приведет к нескольким сокетным соединениям с сервером. Клиентская документация socket.io подтверждает, что когда io () вызывается несколько раз, устанавливается отдельное соединение с сервером.

Можно ли как-нибудь предотвратить это?

Я бы предпочел, чтобы это было предотвращено на стороне клиента, но я рад также попробовать решения на стороне сервера.

Я пробовал искать, но большинство подобных вопросов касаются нескольких соединений случайноОткрываясь при обновлении страницы или аналогичной, я хочу запретить пользователям целенаправленно открывать консоль и создавать новые подключения.

Я надеялся, что есть какой-то способ скрыть io () от консоли, но любое решение будетБудьте благодарны.

РЕДАКТИРОВАТЬ: Мне сказали, что клиенту не следует доверять с этим, так как пользователи не могут быть остановлены от использования консоли. В этом случае я хочу, чтобы сервер мог останавливать несколько подключений, приходящих из одного окна или устройства. Как мне поступить так?

Спасибо за помощь.

1 Ответ

0 голосов
/ 02 октября 2019

Сценарий сервера, который пользователь сначала вызывает, генерирует случайную строку аутентификатора. Это может быть помещено в переменную JavaScript, и оно будет отправлено при подключении сокета. Сервер сокетов должен разрешать использование аутентификатора только с одним сокетом, поэтому, если пользователь извлекает аутентификатор из кода и пытается использовать его со своим собственным сокетом, соединение будет отклонено.

...