【发布时间】:2016-04-10 21:27:03
【问题描述】:
我已经搜索了 3 天,如何正确验证 nodejs socket.io 服务器中的用户信息,唯一传递给服务器的东西是 cookie,如 PHPSESSID 等,如果需要的话。
我的问题是:如果用户将他的 PHPSESSID cookie 值更改为其他值,比如朋友 cookie 值,然后重新初始化套接字服务器连接,所有应该发送给我朋友的流量都会发送给我。 (用户对用户私人通信)
即使我使用memcached服务器存储会话,也只有一件事可以验证用户,那就是再次会话ID,我应该如何验证用户会话?
我无法更改会话存储位置,因为我使用的是 PHP Wave 框架。 有没有 socket.io 的替代品,但更安全?
【问题讨论】:
-
这是所有 Web 应用程序中的预期漏洞。如果您可以窃取某人的 cookie,您就可以冒充他们。
-
这个问题有个名字:会话劫持。
-
@Federico 嗨,
session_regenerate_id()可以解决会话劫持吗? -
这里没有真正的解决方案,只是防止它发生。使用 https 并重新生成会话 ID 会有所帮助,但这只是难题的一部分(如果会话数据存储在数据库中,则 sql 注入可能是一个问题 - 或 xss 或一百万个其他可能的问题)。
标签: php node.js frameworks socket.io memcached