常见漏洞验证121 条

GraphQL 安全配置检查

GraphQL 常见问题:自省开启、无查询深度/复杂度限制、批量查询缺乏限速;检查配置与滥用防护是否到位。

GraphQL 检查看哪几面

GraphQL 把接口收敛到一个端点,好处是灵活,代价是安全控制点也集中了:自省开启等于把 schema 全貌交出去;缺少查询深度与复杂度限制,一条嵌套查询就能压垮服务端;缺少批量限制,一次请求可以携带大量操作,让限速形同虚设。字段级授权是另一个盲区——对象能查不代表每个字段都能查。检查以配置与限制验证为主,不做数据抽取。

基本信息

配置面自省开关、调试控制台暴露、字段级授权
防护面查询深度限制、复杂度限制、批量操作数限制、限速
端点确认常见路径为 /graphql、/gql、/api/graphql
检查纪律只验证配置与限制,不做数据抽取与穷举
修复方向生产关闭自省或加鉴权,补齐深度、复杂度与批量限制

典型使用场景

  • 前后端分离系统的接口安全评审
  • 评估是否存在拒绝服务风险(深层嵌套与批量操作)
  • 核查字段级授权:不同角色能否读到不该读的字段
  • 评估错误信息是否泄露内部实现细节
  • 修复验证:确认限制已生效且自省已关闭或需鉴权

核查要点

核查要点
1. 检查自省是否开启(生产环境建议关闭或加鉴权)
2. 提交深层嵌套查询,观察是否被深度限制拦截
3. 提交多操作批量请求,观察批量限制与限速是否生效
4. 用不同角色的测试账号查询同一字段,观察字段级授权
5. 记录:端点、配置现象、缺失的限制项,不导出业务数据

现象与判断

现象含义处置
自省查询返回完整 schema接口全貌对外可见建议关闭自省或加鉴权
深层嵌套查询正常执行缺少深度限制评估拒绝服务风险并提建议
批量请求全部执行缺少批量与复杂度限制限速可被绕过,属防护缺失
低权限角色可读管理字段字段级授权缺失列缺陷,按数据敏感度定级
字段级授权是 GraphQL 常见盲区:越权问题要在 schema 层面按对象与字段逐个核查,而不是只看端点级权限。
不要用自省结果做全面字段枚举测试:那会明显偏离授权范围,也容易造成大量数据读取与业务压力。

易错点

  • 用自省结果做全面字段枚举:偏离授权范围,且容易触发数据批量读取
  • 只测深度限制漏掉批量与复杂度:三者缺一,限速都能被绕过
  • 忽略字段级授权:对象级权限通过不代表字段级安全
  • 遗留调试控制台未关闭:控制台可交互执行查询,风险高于普通文档暴露

数据来源与参考

  • GraphQL 官方文档(Security)
  • OWASP API Security Top 10
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌