开放的 websocket 连接都有哪些安全问题?

Posted

技术标签:

【中文标题】开放的 websocket 连接都有哪些安全问题?【英文标题】:What are the security issues around an open websocket connection?开放的 websocket 连接有哪些安全问题? 【发布时间】:2013-04-28 19:20:59 【问题描述】:

我正在构建一个使用 websockets 的应用程序。我只允许经过身份验证的用户在登录并获得会话 ID 后打开与服务器的 websocket 连接。

    一旦我打开了与经过身份验证的用户的 websocket 连接,当前的“页面”就会保存打开的 websocket 连接的详细信息。此时,这种连接是不是比较安全?或者我真的应该在我自己的应用程序级协议中通过 websocket 传入的每条消息上检查一些令牌吗?

    是否存在任何已知的跨站点伪造类型的安全问题?有人可以通过让经过身份验证的用户以某种方式执行一些 javascript 来合作开放的 websocket - 从而能够利用开放的 websocket 连接?

【问题讨论】:

【参考方案1】:

1) 当您在服务器端设置安全时,连接是安全的。因此,您必须通过 WebSockets 发送会话 ID,在服务器端验证它是否正确并将连接标记为有效。 HTTP 的身份验证更加困难,因为 HTTP 是无状态的(与原始 TCP 不同)。当然,仍然可以劫持 TCP 连接,但这并不是那么容易(例如参见 this article ),如果发生这种情况,那么(TLS 除外)将无济于事。

2) 好吧,如果你用这样的匿名函数包装你的 WebSocket 连接:

(function() 
    var ws = new WebSocket("ws://localhost:1000");
    // some other stuff
)();

那么外部 JavaScript 将无法访问它,因此您不必担心。

【讨论】:

关于上面的#1 - 是的,我正在检查原始握手中的 cookie,因为它是一个 HTTP GET 请求来设置连接。 cookie 必须具有通过先前身份验证的有效会话 ID。所以我安全地授予连接......只是不清楚现在可能存在哪些漏洞,这个连接处于打开状态并且不验证每条消息......

以上是关于开放的 websocket 连接都有哪些安全问题?的主要内容,如果未能解决你的问题,请参考以下文章

html5都有哪些优点和缺点

Comet 和 Websockets 中的开放连接差异

常用的网络安全工具都有哪些?

开源的数据库都有哪些?

前端架构涉及到哪些范围?

前端架构涉及到哪些范围?