GraphQL注入

GraphQL概述

GraphQL是一种查询语言,用于API设计和数据交互,不仅仅用于查询数据库。GraphQL 允许客户端在一个请求中明确地指定需要的数据,并返回预期的结果;并且将数据查询和数据修改分离开,大大增加灵活性。GraphQL正在迅猛发展,但也存在着一些安全问题。

GraphQL查询

GraphQL支持多种查询方式:Query、Mutation、Subscription、Input、Enum、Union、Interface

其中Query是GraphQL最常用的一种方式,用于从服务端获取数据,使用Query可以指定需要返回的字段以及过滤条件。

例如,请求服务器返回用户ID为1的用户名和电子邮件地址:

query{
    user(id:1){
        name
        email
    }
}

Mutation用于在服务端修改或添加数据

例如,请求服务器将用户ID为1的用户名更改为name1:

mutation{
    updateUserName(id:1,name:"name1"){
        id
        name
        email
    }
}

Subscription允许客户端通过WebSocket连接实时接收来自服务器的数据更新。比如可以应用于在线聊天等。

例如,订阅一个名为Message频道,并有消息时返回消息内容:

subscription{
    Message(channel:"chat"){
        content
        author
    }
}

GraphQL注入利用

接口名称通常带有graphql字眼,查询语法是以query作为开头的。

存在GraphQL注入时,可以进行越权查询敏感数据等操作,比如ssrf利用。

比如,

POST /graphql HTTP/1.1
Host: graphqlapp.herokuapp.com
Content-Type: application/json

{"query":
 "\n query 
IntrospectionQuery {\n 
__schema {\n queryType { 
name }\n mutationType { 
name }\n",
"variables":{
    "host":"test.com",
    "port":80
}
}

这里就可以利用ssrf。利用"host":"xx.dnslog.cn"

GraphQL注入防御建议

  • 限制查询的访问权限
  • 限制查询返回的字段和数据量
  • 检查输入参数的合法性
  • 限制查询语句的复杂性:GraphQL支持嵌套查询和参数化查询。

相关推荐

  1. GraphQL注入

    2024-04-11 11:26:02       34 阅读
  2. GraphQL入门

    2024-04-11 11:26:02       47 阅读
  3. Graphql mock 方案

    2024-04-11 11:26:02       37 阅读
  4. 什么是graphQL

    2024-04-11 11:26:02       29 阅读
  5. GraphQL入门之使用ApolloServer和express构建GraphQL服务

    2024-04-11 11:26:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 11:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 11:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 11:26:02       82 阅读
  4. Python语言-面向对象

    2024-04-11 11:26:02       91 阅读

热门阅读

  1. Next中的App Router

    2024-04-11 11:26:02       32 阅读
  2. 堆排序算法(HeapSort)

    2024-04-11 11:26:02       33 阅读
  3. Docker - 镜像加速

    2024-04-11 11:26:02       31 阅读
  4. 第1关:无人车组装:让你的无人车感知世界吧

    2024-04-11 11:26:02       29 阅读
  5. 二叉树---堆的现实

    2024-04-11 11:26:02       34 阅读
  6. UVA247 Calling Circles 解题报告

    2024-04-11 11:26:02       34 阅读
  7. 【图论】链式前向星+BFS实现拓扑排序(topSort)

    2024-04-11 11:26:02       30 阅读