WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务器和客户端之间进行实时双向通信。单个 WebSocket 连接中可能存在多次数据传输和交互,相较于单个 HTTP 连接,其频率统计数值会更大。如果您的业务包含 WebSocket 协议通信请求,需要单独配置防护策略。
传统 HTTP 协议请求方法中,每条数据都需要单独的请求和响应。而使用 WebSocket 协议通信,可以在应用程序运行期间保持单个连接打开。这意味着服务器和客户端之间可以持续双向通信,直到连接被显式关闭(即服务器或客户端主动断开连接)。该协议适用于需要即时响应和更新的应用程序,如聊天、直播、协作编辑、游戏等。其特点如下:
在同等条件下,一个 HTTP 请求的次数为 1 次,而一个 WebSocket 的长连接中可能会发生客户端与服务器的多次交互。这些交互也会被统计到请求次数中用于判定是否存在攻击行为,可能会因为 WebSocket 长连接中的交互次数过多,而超出您设定的阈值触发防护动作。因此,如果您的业务中存在 WebSocket 协议请求,建议单独配置涉及频次统计的防护策略,包括 CC 防护、Bot 频率限制和 Bot 统计防护。
在配置 WebSocket 请求相关的防护策略时,可通过设置 WebSocket 协议对应的业务请求路径,将普通 HTTP 请求和 WebSocket 请求区分开来。例如,您的业务中使用 WebSocket 请求的路径为/websocket/*
,则需要基于该请求路径,配置相关防护策略。配置说明请参见:
部分防护策略对 WebSocket 请求过程中建立连接的数据包生效,而部分策略对所有入向流量生效,这里的入向流量包括首次建立连接时由客户端发起的请求流量和连接保持开放状态时的入向流量。
以下为不同防护策略对 WebSocket 请求的生效范围说明,具体的处置动作可参见执行动作说明。
策略 | 是否生效 | 说明 |
---|---|---|
访问控制 | 是 |
|
自定义拦截响应 | 否 | 配置后若发生拦截,页面均展示为断链(无法访问)。 |
CC 自定义防护 | 是 | 对入向流量生效。 |
CC 智能防护 | 是 | 基于入向流量自学习。 |
漏洞防护 | 是 | 对入向流量生效。 |
漏洞防护-请求加白 | 是 | 在数据传输过程中持续放行。 |
漏洞防护-字段加白 | 是 | 在数据传输过程中持续放行。 |
API 防护 | 是 | 对入向流量生效。 |
托管 Bot 分类规则 | 是 | 对建立连接的数据包生效,如果动作设置为拦截:
|
自定义 Bot 分类规则 | 是 | 对建立连接的数据包生效,如果动作设置为拦截:
|
动态令牌 | 否 | 不适配。 |
频率限制 | 是 | 对入向流量生效。 |
统计防护 | 是 | 对入向流量生效。 |
行为地图 | 否 | 不适配。 |
网页防篡改 | 否 | 不适配。 |