SignalR的messageId格式解析及Azure WAF误拦截问题咨询
SignalR长轮询模式messageId构成规则及Azure WAF误报解决方案
字段构成规则
你遇到的是ASP.NET SignalR 2.x版本长轮询传输模式下的标准参数格式,该messageId由框架自动生成,没有自定义注入空间,具体结构如下:
整体采用[前缀段]|[标识1],[数值1]|[标识2],[数值2]|[标识3],[数值3]的格式,各部分含义:
- 前缀段:以
d-开头,后续拼接服务端连接唯一哈希、多实例部署的服务器路由标记(你示例中的d-B1017AFE-SC,B8就是该段,用于多节点集群下定位连接所属的服务实例) - 后续每段双字符标识都是SignalR内置的传输类型标记,完全为固定框架字段:
bW:WebSocket传输的消息确认序列号bs:Server-Sent Events传输的消息确认序列号bx:长轮询(LongPolling)传输本身的消息确认序列号
所有|分隔符和双字符标识都是框架生成的合法内容,不存在任何命令注入特征。
Azure WAF误报说明
本次触发的是Azure WAF内置OWASP规则集的950006号规则(系统命令注入检测),属于规则模糊匹配导致的误判:
规则逻辑是匹配管道符
|后接ps字符的特征,把|bW/|bs/|bx中的第二个字符和p模糊匹配命中,实际请求参数不存在任何可执行的系统命令内容。
你可以向客户申请添加以下WAF放行规则即可解决问题:
- 生效范围:路径为
/signalr/poll的POST请求 - 排除参数:请求表单字段
messageId - 排除规则ID:
950006
抓包参考

内容的提问来源于stack exchange,提问作者Rango
相关产品推荐
相关产品推荐

