WebSocket - 安全

  • 简述

    应出于安全原因设计协议。WebSocket 是一个全新的协议,并不是所有的 Web 浏览器都能正确实现它。例如,其中一些仍然允许混合使用 HTTP 和 WS,尽管规范暗示相反。在本章中,我们将讨论一些用户应该注意的常见安全攻击。
  • 拒绝服务

    拒绝服务 (DoS) 攻击试图使请求它的用户无法使用机器或网络资源。假设有人在没有时间间隔或时间间隔很小的情况下向 Web 服务器发出无限数量的请求。服务器无法处理每个连接,并且将停止响应或保持响应太慢。这可以称为拒绝服务攻击。
    拒绝服务对最终用户来说非常令人沮丧,他们甚至无法加载网页。
    DoS 攻击甚至可以应用于点对点通信,迫使 P2P 网络的客户端同时连接到受害者的 Web 服务器。
  • 中间人

    让我们借助一个例子来理解这一点。
    假设一个人A正在通过 IM 客户端与他的朋友B聊天。某个第三者想要查看您交换的消息。因此,他与这两个人建立了独立的联系。他还向人A和他的朋友B发送消息,作为您交流的无形中介。这被称为中间人攻击。
    对于未加密的连接,中间人攻击更容易,因为入侵者可以直接读取包。当连接被加密时,信息必须由攻击者解密,这可能太难了。
    从技术方面来看,攻击者拦截了一个公钥消息交换并发送消息,同时用他自己的密钥替换请求的密钥。显然,使攻击者的工作变得困难的可靠策略是将 SSH 与 WebSockets 结合使用。
    大多数情况下,在交换关键数据时,更喜欢 WSS 安全连接而不是未加密的 WS。
  • 跨站脚本

    跨站点脚本 (XSS) 是一个漏洞,攻击者可以利用该漏洞将客户端脚本注入网页或应用程序。攻击者可以使用您的应用程序中心发送 HTML 或 Javascript 代码,并让这些代码在客户端计算机上执行。
  • WebSocket 原生防御机制

    默认情况下,WebSocket 协议被设计为安全的。在现实世界中,用户可能会遇到由于浏览器实现不佳而可能出现的各种问题。随着时间的推移,浏览器供应商会立即修复任何问题。
    当使用通过 SSH(或 TLS)的安全 WebSocket 连接时,会添加额外的安全层。
    在 WebSocket 世界中,主要关注的是安全连接的性能。尽管顶部还有一个额外的 TLS 层,但协议本身包含针对这种使用的优化,此外,WSS 通过代理更流畅地工作。

    客户端到服务器屏蔽

    在 WebSocket 服务器和 WebSocket 客户端之间传输的每条消息都包含一个特定的密钥,称为屏蔽密钥,它允许任何符合 WebSocket 的中介取消屏蔽和检查消息。如果中介不兼容 WebSocket,则消息不会受到影响。实现 WebSocket 协议的浏览器处理屏蔽。

    安全工具箱

    最后,可以提供有用的工具来调查 WebSocket 客户端和服务器之间的信息流,分析交换的数据,并识别可能的风险。

    浏览器开发者工具

    就开发人员支持而言,Chrome、Firefox 和 Opera 是出色的浏览器。他们的内置工具帮助我们确定客户端交互和资源的几乎所有方面。它在安全方面发挥着重要作用。