将 websockets 连接映射到数据库中的用户的最佳方法是啥?

Posted

技术标签:

【中文标题】将 websockets 连接映射到数据库中的用户的最佳方法是啥?【英文标题】:What is the best way to map websockets connection to users in the database?将 websockets 连接映射到数据库中的用户的最佳方法是什么? 【发布时间】:2014-02-08 17:26:04 【问题描述】:

我正在寻找与数据库中的用户映射 websockets 连接,目前有这样的东西:

function connectToNotifServer()

var conn = new WebSocket('ws://localhost:8080');

conn.onopen = function(e) 
    alert("Connection established!");
    conn.send(JSON.stringify(user_id: sessionStorage.getItem("user_id")));
;

conn.onmessage = function(e) 
    alert(e.data);
;

conn.onclose = function(e) 
    alert("Connection closed!");
;
return conn;


然后我有一个 php websockets 服务器,它保留了与 user_id 的连接的映射。

但是,我认为存在安全漏洞,因为用户可以简单地在 user_id 中注入他想要的任何值并模拟另一个用户。是否有更好的方法来保留此映射,但无需发送 user_id 或以其他方式发送?

谢谢

【问题讨论】:

【参考方案1】:

您发送的任何“内置”到您的 javascript 的内容至少可以被复制和复制。验证用户对服务器端 websocket 的凭据的唯一方法是让 PCP websocket 服务器要求类似“用户名/密码”之类的内容 - 然后它会检查服务器端并仅针对该 websocket 保留。 即您必须要求用户输入此信息。

【讨论】:

以上是关于将 websockets 连接映射到数据库中的用户的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

端口转发和端口映射

javascript中的Websockets,页面刷新或导航到其他页面时连接终止[重复]

通过 websocket 连接 AWS MQTT

Rails websocket 连接ID存储

Websockets 请求-响应映射

WebSocket 发送有关连接的额外信息