如何解决如何保护socket.io聊天室
在我的网站中,我正在使用Socket.io创建聊天室,两个用户可以在其中聊天。为了确保房间的安全性,我正在使用crypto创建一个随机的房间ID:
const crypto = require("crypto");
module.exports = function () {
const encryption_strength = 8;
return new Promise(function(resolve,reject) {
crypto.randomBytes(encryption_strength,function(err,data) {
var roomID= data.toString("hex");
if (!roomID) {
reject ("Failed to generated Encryption room ID");
}
resolve (roomID);
})
})
}
只有可能加入该会议室的两个用户才能看到此会议室ID。服务器中已存在加入会议室的代码,如下所示:
tech.on("connection",(socket) => {
let room_temp;
let user_temp;
// emit the message that the user joined the room in that room
socket.on("join",(data) => {
room_temp = data.room;
user_temp = data.displayed_name;
socket.join(room_temp);
tech.in(room_temp).emit("display",user_temp + ` Joined ${room_temp} Room!`);
})
// emit the message to the room
socket.on("message",(msg) => {
console.log(room_temp);
tech.in(room_temp).emit("display",`${user_temp}: ${msg}`);
})
socket.on("disconnect",() => {
tech.in(room_temp).emit("display",`${user_temp} disconnected`);
})
})
我不确定房间外的其他一些用户是否能够获得此房间ID并加入房间,因为所有用户共享相同的名称空间。加入命名空间的用户可以查看该命名空间中的所有room_id吗?房间ID仅对可能加入我数据库中房间的两个用户可见。但是在socket.io上我应该采取其他措施来防止未经授权的用户进入会议室并保护消息的安全性吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。