GraphQL 安全测试
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的指南,将 @user_3c6cb52e/graphql-sh-woegho 安装到当前 AI 助手中。
技能介绍
为什么需要专门的 GraphQL 安全测试
GraphQL 的灵活查询结构让它成为 API 设计的首选,但也带来了传统 REST 没有的攻击面。单一的 /graphql 端点允许客户端自由构造查询,这让内省滥用、批量请求放大、深层嵌套查询等 DoS 手段有了可乘之机。同时,字段级别的授权控制如果实现不当,很容易造成 IDOR 或越权数据泄露。很多团队在测试时只检查 HTTP 层的状态码,却忽略了查询结构本身可能存在的脆弱性。
这个技能做了什么
本技能提供一套结构化的 GraphQL 安全测试清单,按照攻击路径而非工具罗列来组织:
- 内省与字段枚举:验证
__schema与__type是否被不当地暴露给未授权用户,检查错误信息中是否泄露了字段建议。 - 拒绝服务类测试:通过构造深层嵌套查询(
query { a { b { c { d { e } } } } })和大型批量请求([{query1}, {query2}, ...]),评估服务端是否限制了query depth与query complexity。 - 注入与授权绕过:在参数值中注入恶意 payload,检查输入是否被正确过滤;测试不同用户身份下的字段级访问控制,确认是否存在 IDOR 或角色绕过。
使用时,将完整方法论作为操作清单加载,按顺序执行每个技术点的检查,记录已完成项,并根据发现建议后续测试方向。
适用边界
- 本技能面向已有 GraphQL 端点的安全评估,不包含服务端代码审计或 schema 设计指导。
- 测试前需获得目标系统的授权,深度和复杂度测试可能影响服务可用性。
- 自动化工具的探测结果需结合人工分析确认,误报和漏报都可能存在。
使用场景
- 对新建 GraphQL API 做上线前安全评审,验证内省查询是否暴露了未授权的 schema 信息。
- 渗透测试中发现端点错误信息含字段建议,需确认是否可用于枚举隐藏字段。
- 评估服务端是否对深层嵌套查询和批量请求设限,防止资源耗尽型 DoS。
- 审计用户身份切换时的字段级访问控制,定位 GraphQL 接口的 IDOR 或越权风险。
适合人员
- Web 安全工程师,需要在渗透测试中系统化地排查 GraphQL 端点的常见漏洞类型。
- 后端开发工程师,在上线前验证 API 的输入校验和授权逻辑是否可靠。
- Bug bounty 猎人,面对目标站点的 GraphQL 接口时需要快速定位可利用的攻击点。
- API 架构师,关注查询复杂度限制和内省暴露等设计层面的安全决策。