You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Azure WAF允许PostMan图片上传请求却拦截Windows应用请求?

问题背景

环境

  • 客户代理机上的Windows应用支持通过HTTP POST上传图片到服务器
  • 请求经Azure Gateway转发,该网关启用了OWASP 3.2全规则集的WAF
  • 请求采用MultipartFormData格式提交

问题现象

Windows应用发送的图片上传请求被WAF拦截,但用PostMan发送完全相同的请求却能正常通过。拦截触发的是RULE 200003【Multipart Request Body Strict Validation.】,拦截原因显示为Equal 1 at MULTIPART_STRICT_ERROR.

已尝试方案

  • 在Visual Studio控制台应用中直接复用PostMan生成的请求
  • 通过Fiddler抓取PostMan的请求格式,修改控制台应用的请求格式与之对齐
  • 查阅StackOverflow和Microsoft官方问答,有内容提到这可能是Microsoft侧的Bug,但PostMan的请求仍可正常执行
核心疑问

为什么Azure WAF允许PostMan的请求,却拦截Visual Studio控制台应用或客户的Windows应用?

原因解析
  1. Multipart请求的细微格式差异
    PostMan生成的Multipart请求严格遵循HTTP规范:比如分隔符前后的空白符、换行符采用标准CRLF、头部字段的格式和大小写完全合规。而Windows应用/控制台应用使用的HTTP客户端库(比如旧版.NET HttpClient)在构造请求时,可能存在易忽略的格式问题:

    • 边界分隔符前后多了或漏了空白字符
    • 部分字段头部缺少必要的换行
    • 用LF替代了标准的CRLF换行
    • Content-Disposition头部的格式存在细微偏差
  2. WAF规则的严格校验逻辑
    OWASP 3.2的RULE 200003是对Multipart请求体的强校验规则,会检查请求体结构完整性、分隔符合法性、头部格式等多个维度。PostMan的请求完全符合这些校验标准,而Windows应用的请求只要存在一个微小的格式瑕疵,就会触发WAF的拦截判定。

  3. HTTP客户端的实现差异
    不同HTTP客户端的Multipart请求构造逻辑有区别:PostMan内置的客户端针对WAF场景做了优化,自动规避了容易触发拦截的格式问题;而.NET等平台的客户端库,尤其是旧版本,在处理边界分隔符、字段头部时的实现细节,刚好踩中了WAF的校验阈值。

内容的提问来源于stack exchange,提问作者Shishir Sasal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 23:26:10