【问题标题】:Securing a Socket.IO Websocket and restricting it to a domain保护 Socket.IO Websocket 并将其限制在域中
【发布时间】:2016-09-09 23:27:03
【问题描述】:

所以我是 Socket.IO 的绝对初学者,但我有一个预构建的应用程序需要通过两种方式进行保护:它需要通过 HTTPS 传输,它需要仅限于服务器数据到特定的域。

到目前为止,这是发射器的代码:https://github.com/Bitzz/Pokemon-Go-Coords/blob/master/discord-bot/index.js 我该如何保护它? 我假设类似于

io.set('origins', 'https://example.com:*');

第 156 行会将其限制为一个域... 我可以只将特定域列入黑名单吗? 除此之外,我如何让它通过 wss 在 https 上发出?

目前控制台显示:

我想我可以弄清楚如何配置 web 端阅读器来查找 over https websocket,但让它发送并不是我知道如何弄清楚的事情。 请使用简单的话我不是一个聪明的饼干。 :(

【问题讨论】:

    标签: node.js sockets https socket.io wss


    【解决方案1】:

    为了将 Socket.IO 限制为多个域,我相信您只需将每个域分隔一个空格即可。

    io.set('origins', 'https://example.com:* https://anotherdomain.com:*');

    关于 SSL 连接,有几种存档方式:

    1. 配置 Socket.IO 在 NodeJS 中使用 ssl(wss:// 而不是 ws://),这里有答案:node.js, socket.io with SSL
    2. 用Nginx创建反向代理,这里有指导:https://www.exratione.com/2013/06/websockets-over-ssl-with-nodejs-and-nginx/
    3. 使用来自第三个服务的反向代理,例如https://www.cloudflare.com

    第三个选项最简单的方法归档。您只需要将您的域 CloudFlare 指向您的 ws 服务器并配置一条记录,CloudFlare 将免费为 websocket 提供 ssl 并自动对您的源 websocket 服务器进行 SSL 终止。

    【讨论】:

    • 您好,谢谢您的回复。对于 2) 是否有 apache2 方法可以做到这一点?我一直在尝试用 apache2 做一个反向代理,但没有运气。当我与域所有者联系时,我将尝试第三个选项,因为我目前无权更改 DNS 记录。
    • 感谢您的帮助,我设法将轮询 http 请求重定向到 https 代理,使用:SSLProxyEngine on ProxyPass /socket.io http://127.0.0.1:49002/socket.io/ ProxyPassReverse /socket.io http://127.0.0.1:49002/socket.io/ 我仍然遇到 wss 抛出“失败:WebSocket 握手期间出错:意外的响应代码:400”。 (众所周知,轮询请求繁重且效率低下。)
    【解决方案2】:

    我找到了解决办法。

    在安全配置 (*:443) 的 apache2 站点配置文件中,添加以下内容:

    #This enables polling over https. Painfully inefficient but a good fallback
    SSLProxyEngine on
    ProxyPass /socket.io http://127.0.0.1:49002/socket.io/ 
    ProxyPassReverse /socket.io http://127.0.0.1:49002/socket.io/
    
    #This upgrades and rewrites the ws to wss
    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://localhost:49002%{REQUEST_URI} [P]
    

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多