#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. у вас может быть список разрешенных пользователей для определенной комнаты, сохраненный в памяти, каждый раз, когда какой-либо пользователь пытается подключиться, он должен указать имя комнаты, когда он хочет присоединиться, каждый раз, когда пользователь отправляет данные в какую-то комнату, вы можете проверять некоторый токен.