【问题标题】:Securing Websockets保护 Websocket
【发布时间】:2011-08-06 22:17:03
【问题描述】:

目前,我们的应用程序旨在促进初始加载后通过 websocket 进行的所有通信。

我们正在尝试找出一种解决方案,通过这种传输方式安全地传递敏感数据。

到目前为止,我们正在考虑一些事情:

  1. 通过传回唯一的 websocket 传输的身份验证 初始加载时通过 SSL 传递的会话 cookie 中存储的哈希值。
  2. 使用类似 javascript bcrypt 的客户端加密 实现在传输之前对所有内容进行加密。

  3. 只是通过 SSL 将所有敏感数据与普通帖子一起传递 虽然我们不想。

类似数字 1 的结果可能是最好的结果,但我们不知道即使经过身份验证,websocket 是否也容易受到中间人攻击等攻击。

任何帮助解决可能的安全问题,或任何其他关于如何通过 websockets 实现真正安全的想法将不胜感激!

【问题讨论】:

标签: javascript security encryption websocket


【解决方案1】:

连接到 wss:// WebSocket URL 而不是 ws:// 将使用浏览器的标准 TLS/SSL 加密来连接到服务器。它相当于 HTTPS 与 HTTP。如果您信任浏览器的 SSL/TLS 实现,那么您可以信任 WebSocket wss:// 连接,因为它们使用相同的引擎。您需要为您的 websocket 服务器配置一个签名的 SSL 证书,但无论如何这都是必需的。

【讨论】:

    【解决方案2】:

    保护(使用 SSL/TLS 加密)对您的数据非常重要。但是您也应该考虑身份验证。如果不需要首先进行身份验证,那么任何拥有 ws 设备且知道您的服务器端点的人都可以获取数据。 见http://simplyautomationized.blogspot.com/2015/09/5-ways-to-secure-websocket-rpi.html 包括 3 次握手方法 (CHAP),它要求客户端和服务器都具有“预共享密钥”。
    其他方式在帖子中有详细说明。

    干杯

    【讨论】:

    • 我查看了你的那个网站,不清楚编写 WebSocket 服务器的人必须做什么。服务器是否只需要 HTTPS 模式?
    • @Sonny 不,您需要编写一个例程来处理握手它不是 HTTPS/SSL 标准的一部分。
    【解决方案3】:

    关于 cookie,可能值得考虑的是,(目前),WebSockets 协议规范不要求浏览器提供由Web 服务器最初为您提供用于打开与该服务器的 WebSockets 连接的 JavaScript。

    请参阅 here,了解 Firefox 的行为方式(来自 FF 开发人员)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2016-04-17
      • 2016-08-25
      • 1970-01-01
      • 2015-01-31
      • 2020-11-19
      • 2017-01-27
      相关资源
      最近更新 更多