如何确保websocket得到保护

时间:2015-07-22 13:03:41

标签: 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

有没有办法测试协议并且足够了,例如。一些事情:

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

看起来我错过了一些东西,因为它不可能我是唯一有这个问题的人:D

对于这两种实现( WebSocket-Node ws )都有任何帮助!

2 个答案:

答案 0 :(得分:1)

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

来自WebSocket.Node

看起来您可以使用以下方式创建TLS服务器:

  

服务器连接支持TLS(请改用https.createServer   http.createServer)

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

答案 1 :(得分:1)

来自https://en.wikipedia.org/wiki/WebSocket

  

WebSocket协议规范分别为未加密和加密的连接定义了两个新的URI方案ws:和wss:。除了方案名称和片段(不支持#)之外,其他URI组件定义为使用URI generic syntax

因此,您可以使用与普通网址相同的方式在websocket网址中指定端口。