此刻我想做的是当用户离开大厅时,我想发出离开大厅的用户名,然后在大厅聊天室中显示该信息。这是当前发出的信号:
$("#lobby-leave-btn").on('click', () => {
socket.emit('lobby-left', {
username: username
});
});
问题在于,每个人都可以在控制台中设置他们想要的用户名,即使我在服务器端检查数据库中是否存在该用户名,他们也可以键入不在大厅中的现有用户名。
是否有某种可能的方式可以在不传递用户名的情况下做到这一点?更安全的方法?我可以在服务器端获取socket.id
,但是再也无法通过套接字ID获取用户信息。任何帮助表示赞赏。
答案 0 :(得分:0)
如果您有用户名,则应该将它们存储在服务器端,我假设您正在这样做(在数据库中,或者在用户连接时仅存储在服务器的内存中)。在这种情况下,一旦您知道用户是谁(即,一旦他们登录(如果您有登录系统)或连接到套接字),就应该将用户名存储为属性在服务器上的套接字本身上。然后,任何传入的套接字数据都会自动附加用户名,因为它是固有地连接到该套接字的。
网络安全的口头禅是,如果可以帮助,则永远不要信任用户提交的数据。因此,切勿让用户在未经某种验证的情况下识别自己的行为。因此,请在登录或连接时验证一次,然后将其身份存储在套接字上,每当要进行更改时都不要让他们告诉您他们是谁。