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

Azure WAF拦截PUT请求:403 ModSecurity Action与JSON解析异常排查

解决PUT请求触发OWASP 3.0规则200002导致的403/400错误

我刚踩过几乎一模一样的坑,分享下我的排查过程和解决办法:

问题复盘

最开始我也以为是Azure WAF的REQUEST-911-METHOD-ENFORCEMENT规则拦了PUT请求——毕竟GET/POST都正常,唯独PUT报403。结果找网络团队拉了完整请求日志才发现,实际是OWASP 3.0规则集的200002强制规则在拦截,返回的真实状态码是400,原因是请求体的JSON格式不规范:对象键没有用字符串包裹,不符合JSON标准。

更迷惑的是,我用Swagger和Postman测试时完全没问题,后来才反应过来:这俩工具会自动帮你修正不规范的JSON,把未加引号的键补上,所以本地测不出来问题。

解决步骤

  1. 先验证问题根源
    别用工具,直接用curl发送一个键不带引号的原始请求,比如:

    curl -X PUT https://your-api-url/endpoint -d '{id: 123, value: "test"}' -H "Content-Type: application/json"
    

    这个请求大概率会触发同样的400错误,确认是JSON格式的问题。

  2. 修复代码里的JSON生成逻辑
    检查你发送PUT请求的代码:

    • 如果是手动拼接JSON字符串,确保所有对象键都用双引号包裹(比如把{id: 123}改成{"id": 123})
    • 如果用的是序列化库(比如C#的Newtonsoft.Json、Java的Jackson),检查库的配置有没有开启宽松模式——有些库默认会允许不带引号的键,但生产环境的WAF规则是严格遵循JSON规范的
  3. 临时应急方案(非长久之计)
    如果赶上线来不及改代码,可以和安全团队沟通,针对你的API路径临时禁用OWASP 200002规则,但这只是权宜之计,最终还是要把JSON格式修正过来,避免后续其他规则触发问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:20