首页/安全/渗透测试与安全评估速查/HTTP 参数污染检查(HPP)
常见漏洞验证121 条

HTTP 参数污染检查(HPP)

同一参数重复出现时前后端取值策略可能不一致:WAF 取首个、后端取末个等差异可造成校验错位。

HTTP 参数污染是什么

HTTP 参数污染(HPP)指同一个参数名在一次请求里重复出现,而链路各环节的取值策略并不一致:反向代理与 WAF 常取第一个,Java Servlet 容器取第一个,PHP 与部分 Node 框架取最后一个,还有的框架把它读成数组。结果是校验组件看到的值与业务真正使用的值可能不是同一个,出现「校验通过、执行越权」的错位。典型表现是权限判断读第一个参数、实际查询用最后一个。OWASP WSTG 把它列为独立测试项,CWE-235 描述为参数重复处理不当。

基本信息

注入位置查询串、表单体、请求头三类均可重复同名参数
本质各环节取值策略不一致导致的校验与使用错位
关注点风控、越权判断、缓存键与日志记录取值差异
修复方向入参唯一化,显式声明取值规则并统一解析

典型使用场景

  • 越权查询:接口按 ID 取数据,权限校验与数据库查询取了不同值
  • 风控绕过:风控读第一个手机号,业务发短信用最后一个
  • 价格与数量篡改:结算取最后一个参数,风控只看第一个
  • 缓存投毒:缓存键按整串 URL,回源按生效值,出现串号
  • 日志取证失真:审计记录的值与实际生效值不符,追溯失效

验证步骤

验证步骤
1. 选带校验的接口,如按 ID 查询、与权限或金额相关的参数
2. 重复提交同名参数取不同值,例如 id=自己的id 与 id=他人id 同时出现
3. 对比观察:校验组件使用的值 与 业务实际生效的值
4. 换位置复测:查询串、表单体、请求头各试一次  # 三者取值策略常不同
5. 记录参数名、生效规则与偏差方向

各环节取值差异

链路环节常见取值策略错位后果
反向代理与 WAF取第一个值校验的是无害值,危险值继续下沉
Java Servlet 容器取第一个值与部分框架预期不一致时判定失真
PHP 与部分 Node 框架取最后一个值危险值逃过上游校验
部分框架参数数组合并为集合判定逻辑收到非预期结构而放行
缓存与日志组件按原串或首个值处理缓存串号、审计记录与事实不符
修复视角:在框架层统一参数解析策略,关键参数的校验与使用必须取自同一处已规范化后的值;对不接受重复的参数直接拒绝请求。

易错点

  • 只测查询串,漏掉表单体与请求头:三处解析路径不同,漏测会低估风险
  • 把业务上允许的重复参数直接判缺陷:需先确认取值规则与危害,再定性
  • 只提交两次同名参数就下结论:应组合不同位置与不同值数量,确认生效规律
  • 忽略缓存层:缓存键与实际生效值不一致时问题会扩散到其他用户
  • 报告只写参数名不写偏差方向:复核人无法判断是校验侧还是执行侧出错

数据来源与参考

  • OWASP WSTG(HTTP Parameter Pollution)
  • CWE-235
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌