当前位置: 首页 > news >正文

GraphQL注入

GraphQL概述

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

GraphQL查询

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

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

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

query{user(id:1){nameemail}
}

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

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

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

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

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

subscription{Message(channel:"chat"){contentauthor}
}

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支持嵌套查询和参数化查询。
http://www.lryc.cn/news/337407.html

相关文章:

  • 以太坊源码阅读01
  • Spark-Scala语言实战(15)
  • 【SpringBoot XSS存储漏洞 拦截器】Java纯后端对于前台输入值的拦截校验实现 一个类加一个注解结束
  • 【微信小程序】canvas开发笔记
  • TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读
  • u盘为什么一插上电脑就蓝屏,u盘一插电脑就蓝屏
  • 【Redis】redis面试相关积累
  • 【Linux】进程的状态(运行、阻塞、挂起)详解,揭开孤儿进程和僵尸进程的面纱,一篇文章万字讲透!!!!进程的学习②
  • 前端js基础知识(八股文大全)
  • 316_C++_xml文件解析成map,可以放到表格上 + xml、xlsx文件互相解析
  • 未来汽车硬件安全的需求(2)
  • html+javascript,用date完成,距离某一天还有多少天
  • 跟bug较劲的第n天,undefined === undefined
  • 数据结构_基于链表的通讯录
  • jenkins+gitlab配置
  • 【Labview】虚拟仪器技术
  • IvorySQL 3.2原理解析|与Oracle 12c XML函数兼容性的实现机制
  • SpringBoot + Dobbo + nacos
  • 学习笔记-微服务基础(黑马程序员)
  • 每日Bug汇总--Day05
  • docker、ctr、crictl命令对比
  • uniapp 编译后分包下静态图片404问题解决方案
  • 第十二届蓝桥杯大赛软件赛省赛Java 大学 B 组题解
  • 关于openai和chatgpt、gpt-4、PyTorch、TensorFlow 两者和Transformers的关系
  • C 共用体
  • 智能合约:未来数字经济的基石
  • 第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
  • Lua语法(三)——元表与元方法
  • Lua语法(五)——垃圾回收
  • 已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!!