【问题标题】:Is users socket id a critical information? (security point of view)用户套接字 ID 是关键信息吗? (安全角度)
【发布时间】:2015-05-13 02:20:25
【问题描述】:

我正在使用socket.io 构建一个聊天应用程序。如果客户在安全方面收到他们的对话者的套接字 id 可以吗?客户可以对这些信息做些什么吗?我的假设是否定的,因为只有服务器可以向其他客户端发送消息,但我是 Websocket 机制的新手,所以我并不完全了解所有可能性。

【问题讨论】:

  • 我不明白为什么它会是一个安全问题,尽管我也不明白为什么客户端必须接收所有其他客户端的套接字 ID。这是由于Websocket API 的某些基本方面,还是因为您的服务器故意发送信息?在后一种情况下,您为什么要发送它/客户如何处理信息?您是否使用套接字 ID 作为正确用户 ID 的替身?
  • socket id 不是直接发送的,而是用于形成一个唯一的字符串,即房间名称,并将该字符串传递给客户端(因此恶意人员可以理解房间名称包含套接字 id )。另外关于您的最后一个问题,将套接字 ID 直接用作用户 ID 是否是一种不好的做法? (前提是用户的生命周期只是会话的生命周期)
  • @Absurdev:好吧,如果这些房间应该是私人的,并且没有其他身份验证可以阻止加入私人房间而不是知道它的名字,那么是的,使用 public 是个坏主意id。

标签: javascript websocket socket.io


【解决方案1】:

socket.id 只是套接字对象的字符串标识符,它可以在服务器内部使用,也可以作为该用户的“句柄”与其他客户端共享。客户端不能对服务器不专门支持命令的套接字执行任何操作(连接/断开连接除外)。

因此,如果 id 是一个秘密是否重要,完全取决于您支持哪些服务器操作以及它们采用什么参数。默认情况下,客户端无法使用 id 做任何事情。因此,除非您的服务器支持带 id 的命令并且您的设计期望 id 是秘密,否则应该没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-16
    • 2022-11-16
    • 1970-01-01
    • 2012-01-20
    • 2019-02-08
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多