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

Azure负载测试出现Malicious payload报错,请求协助解决

解决Azure Load Testing中JSONPostProcessor的"Malicious payload, having non natural depths"异常

问题根源

net.minidev的json-smart库新版本新增了JSON嵌套深度的安全限制,当响应JSON的嵌套层数超过默认阈值时会触发该异常。Azure Load Testing环境使用的库版本大概率比你本地测试环境的要新,因此本地正常但云端出现报错。

可行解决方案

  • 调整嵌套深度阈值:由于Azure Load Testing基于JMeter,可通过添加JVM参数扩大json-smart的深度限制。在测试计划的JVM参数中配置:
    -Dnet.minidev.parser.maxDepth=1000
    
    数值可根据实际JSON嵌套层数调整,比如设为2000或其他合理值。
  • 替换JSON处理组件:改用JMeter的JSR223 PostProcessor结合Jackson/Gson等库处理响应,避开json-smart的限制。示例Groovy代码:
    import com.fasterxml.jackson.databind.ObjectMapper
    def response = prev.getResponseDataAsString()
    def mapper = new ObjectMapper()
    def jsonNode = mapper.readTree(response)
    // 示例:提取嵌套字段值到变量
    vars.put("targetValue", jsonNode.path("deeply").path("nested").path("field").asText())
    
  • 降级json-smart版本:若测试项目依赖可管控,可降级到无嵌套深度限制的旧版本(如2.3.x),但此操作存在安全风险,需谨慎权衡。

验证步骤

修改配置或代码后,先在本地测试确认能正常处理大嵌套JSON,再上传至Azure Load Testing环境运行,验证异常是否消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:09:59