首页/安全/漏洞与攻击面速查/GraphQL 接口安全要点
Web 漏洞原理与防护55 条

GraphQL 接口安全要点

GraphQL 的灵活性带来特有风险面:introspection 暴露全部类型、深嵌套查询放大资源消耗、字段级权限缺失导致越权;防护从关闭生产 introspection、深度与复杂度限制、字段级授权入手。

漏洞与攻击面速查安全更新于 2026-10-12

防护配置要点

防护配置要点
1. 生产关闭 introspection(或仅内网开启)
2. 限制查询深度与复杂度,设置单查询超时
3. 限制批量查询合并(batching),防止撞库类滥用
4. 字段级授权:每个 resolver 校验主体权限
5. 错误信息统一,避免暴露 schema 细节

限制项(概念示意)

限制项(概念示意)
max_depth: 10
max_complexity: 1000
query_timeout: 5s
# 具体实现依赖所用框架(graphql-ruby、gqlgen、Apollo 插件等)
GraphQL 鉴权容易漏在嵌套字段层:只校验入口查询不校验子对象会形成越权面。

易错点

  • 把关闭 introspection 当作安全完工:越权与资源耗尽两类问题与之无关

数据来源与参考

  • OWASP GraphQL Cheat Sheet
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌