WebSockets - 安全


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

拒绝服务

拒绝服务 (DoS) 攻击试图使请求的用户无法使用计算机或网络资源。假设有人向 Web 服务器发出无限数量的请求,且没有时间间隔或时间间隔很小。服务器无法处理每个连接,并且会停止响应或响应速度太慢。这可以称为拒绝服务攻击。

拒绝服务对于最终用户来说非常令人沮丧,他们甚至无法加载网页。

DoS 攻击甚至可以应用于点对点通信,迫使 P2P 网络的客户端同时连接到受害 Web 服务器。

中间人

让我们通过一个例子来理解这一点。

假设一个人A通过 IM 客户端与他的朋友B聊天。有些第三者想要查看您交换的消息。因此,他与这两个人建立了独立的联系。他还向人A和他的朋友B发送消息,作为你们沟通的隐形中间人。这称为中间人攻击。

对于未加密的连接,中间人攻击更容易,因为入侵者可以直接读取包。当连接被加密时,信息必须由攻击者解密,这可能太困难了。

从技术角度来看,攻击者拦截公钥消息交换并发送消息,同时用自己的密钥替换所请求的密钥。显然,使攻击者的工作变得困难的一个可靠策略是将 SSH 与 WebSocket 结合使用。

大多数情况下,在交换关键数据时,更喜欢使用 WSS 安全连接,而不是未加密的 WS。

跨站脚本攻击

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

WebSocket 本机防御机制

默认情况下,WebSocket 协议被设计为安全的。在现实世界中,用户可能会遇到由于浏览器实现不佳而可能出现的各种问题。随着时间的推移,浏览器供应商会立即修复任何问题。

当使用通过 SSH(或 TLS)的安全 WebSocket 连接时,会添加额外的安全层。

在 WebSocket 世界中,主要关注的是安全连接的性能。虽然上面仍然有一个额外的 TLS 层,但协议本身包含针对此类使用的优化,此外,WSS 通过代理可以更加流畅地工作。

客户端到服务器屏蔽

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

安全工具箱

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

浏览器开发者工具

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