欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

GraphQL 安全攻击面:深度嵌套 DoS 与批量查询速率限制

发表于:|最后更新:|分类:Web安全|阅读:3989 次

由于 GraphQL 允许客户端自选响应格式与关系嵌套,攻击者可以构造无限循环引用递归查询(例如 author -> books -> author -> books...),引发数据库 N+1 级联查询导致 CPU 耗尽。

一、限制 AST 查询最大深度

typescript
import { createComplexityLimitRule } from 'graphql-validation-complexity';
import depthLimit from 'graphql-depth-limit';

const server = new ApolloServer({
  typeDefs,
  resolvers,
  validationRules: [
    depthLimit(5), // 限制最大深度不超过 5 层
    createComplexityLimitRule(1000) // 限制加权查询复杂度上限
  ],
});