проблема в аутентифицированных комнатах в socket.io

#javascript #node.js #websocket #socket.io

#javascript #node.js #websocket #socket.io

Вопрос:

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

 // client side code
var socket = io.connect();
socket
    .emit('Join-Room',"{"username": "myusername", "password" : "mypassword"}");

// server side code
io.sockets.on('connection', function(socket) {
  socket.on('Join-Room', function(userdata) {
   connection.auth(userdata,function(success){
     if(success){
       socket.join(username);
     }
   })
  });
});
  

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

Что я должен изменить, чтобы сделать это безопасным?

Комментарии:

1. вы можете попытаться аутентифицировать пользователя при запуске события on connection.

2. Уже аутентифицирую пользователей при подключении, используя пакет socketio-auth, но проблема все еще существует, подумайте так, вы вошли в систему, подключены к своей комнате, общаетесь с кем-то, если кто-то еще хочет прочитать ваши чаты, это можно легко сделать, но отправьте запрос на сервер о присоединении к этой конкретной комнате, и сервер примет его.

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