是否可以强制socket.io使用wss而不是ws,而不必更改为https?

时间:2017-01-02 12:03:28

标签: javascript sockets security socket.io wss

我一直在尝试设置一个服务器,用户可以使用websockets发送登录,但我不想使用ws这样做。我希望能够在没有https的情况下打开wss。可悲的是,没有任何选择可以做到这一点。所以问题是如何在不使用https协议的情况下在客户端执行此操作。

2 个答案:

答案 0 :(得分:4)

是的,这是可能的。为此,请将您的websocket URL直接传递给socket.io客户端,如下所示:

var socket = io('wss://example.com/');

请注意,反向是不可能的:虽然没有什么可以防止HTTP页面创建WSS连接,但是今天大多数浏览器都会阻止来自HTTPS页面的任何WS连接以强制实施更高的安全性。

我还要提醒一下,通过WSS打开的websocket仍然比它源自的页面更安全。如果您正在使用WSS的安全性,请注意,如果攻击者在加载页面时覆盖了您的页面(HTTPS会阻止),那么所有安全性都可能是徒劳的。

答案 1 :(得分:1)

来自Websocket protocol specification

  

wss URI标识WebSocket服务器和资源名称,以及      表示通过该连接保护通过该连接的流量      TLS (包括TLS的标准优势,例如数据机密性      和完整性,以及端点身份验证)。

强调我的

现在您可以理解您的请求的荒谬性: wss https
当然术语是错误的( https 是与 wss 不同的协议),但是行的底部是两者都只是它们各自的TCP普通协议的版本(< em> http 和 ws )超过TLS

所以答案是

事实上,安全是一件复杂的事情 非常有经验的程序员不会发明或探索新的方法,并且根据您提出的问题,您似乎并不是这方面的专家。

所以做最好的做法最好的做法是说,他们说使用&#34; https &#34;使用&#34; https &#34;。

建议认真开始学习安全(或雇用承包商),除非您拥有抽象代数博士学位和多年开发加密方案的经验,否则创建新的方法来执行安全认证是不可能的。