node.js - 如何确信 websocket 是安全的

标签 node.js websocket

这听起来像是一个荒谬的问题,也许确实如此。 现在我使用 WebSocket-Node但可以切换到 ws很快。 因此,欢迎为这两种实现提供答案。

我在端口 8080 上打开一个监听器并等待连接请求。接受请求后,我想立即确信连接是安全的(如:使用 wss:// 并拒绝简单的 ws://)。

从文档中获取的简单代码是:

wsServer.on('request', function(request) {

  // TODO: produce this single bit
  SSL_IS_ACTIVE = ?;

  if (!SSL_IS_ACTIVE) {
    request.reject(); // ws protocol used, I want wss!
    return;
  }

  // ... proceed to process the request (authentication and so on)
}

虽然这听起来很简单,但我还没有找到任何关于此的文档。

我必须坚持使用 SSL 端口 (443) 还是我仍然可以选择任何端口,例如使用:

wss://localhost:8080/test

有没有办法测试协议(protocol)并且它是否足够,e.G.沿线的东西:

request.protocol === "wss"
-or-
request.uri.indexOf("wss://") === 0

看起来我遗漏了什么,因为我不可能是唯一遇到这个问题的人 :D

对于这两种实现(WebSocket-Nodews),我们将不胜感激!

最佳答案

我觉得确保不发出不安全请求的一种直接方法是在构建服务器时甚至不支持不安全请求。看起来 WebSocket.Node 支持安全服务器。我想 ws 也应该如此。我认为应该有一种方法可以只为两个项目绑定(bind)到 wss

WebSocket.Node 看来您可以使用以下方法创建 TLS 服务器:

TLS supported for server connections (use https.createServer instead of http.createServer)

来自文档:https://github.com/theturtle32/WebSocket-Node

关于node.js - 如何确信 websocket 是安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31563986/

相关文章:

Java应用程序将 "forward"数据从TCPSocket到WebSocket?

node.js - 单页应用程序,http 或 websockets,connect/express 是干什么用的?

javascript - NodeJS 和 Web 套接字 : Check if socket origin is the same as the web socket server

javascript - Express 应用程序主体解析器不适用于某些 api.s

javascript - 在 NodeJS 中使用 Jquery

javascript - TIME(日期对象)未在nodejs中更新

javascript - 无法使用 Node 从 Azure Bot 连接到 CosmosDb

c++ - 在 Linux 平台上从 Node.js 连接到 DB2

Python Websockets 模块没有属性

html - 如何在网络套接字 header 中设置 Sec-WebSocket-Key?