漏洞赏金猎人笔记-GraphQL-I

简介: 为了方便理解,这里从一个例子出发来理解GraphQL通常情况下,当你想获取有关书籍和作者的详细信息时,用REST API的风格写为:

GraphQL


为了方便理解,这里从一个例子出发来理解GraphQL

通常情况下,当你想获取有关书籍和作者的详细信息时,用REST API的风格写为:

/api/books
/api/authors

如果用GraphQL的话,写成如下:

query GetBooks {
  books{
    title
    author
  }
}

结果如下:

38.png

上面这个例子中:

query是一种操作类型,GetBooks是一个任意的操作名称(你自己起的名字).

也可以进行查询嵌套:(如下所示)

query GetBooks {
  books{
    title
    author{
      friends {
        phoneNumber
      }
    }
  }
}

如果后端有相关信息就可以查到信息


其他几个常见的基础知识


ARGUMENTS:

{
  human(id: "1000") {
    name
    height
  }
}
#响应
{
  "data": {
    "human": {
      "name": "Luke Skywalker",
      "height": 1.72
    }
  }
}

这里的语法允许你对结果进行过滤。(查找id为1000的人的相关信息)

ALIASES:

{
  empireHero: hero(episode: EMPIRE) {
    name
  }
  jediHero: hero(episode: JEDI) {
    name
  }
}
#响应
{
  "data": {
    "empireHero": {
      "name": "Luke Skywalker"
    },
    "jediHero": {
      "name": "R2-D2"
    }
  }
}

这里的语法允许你在响应的JSON中创建额外的字段。此处响应中两个字段中都有 "hero"。通过使用别名,可以将它们区分。实际上是 前缀+共有字段 的形式。

FRAGMENTS:

fragment NameParts on Person {
  firstName
  lastName
}
query GetPerson {
  people(id: "7") {
    ...NameParts
    avatar(size: LARGE)
  }
}
#注意:上面与下面是等价的
query GetPerson {
  people(id: "7") {
    firstName
    lastName
    avatar(size: LARGE)
  }
}

类似于...xxx的形式就表示fragments,作用就是使得某一字段可以被复用,从而避免每次都输入同一组字段

VARIABLES(变量):

# $episode: Episode  -----> $变量:变量类型
query HeroNameAndFriends($episode: Episode) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  }
}
#变量赋值
# "变量":"具体的值"
{
  "episode": "JEDI"
}
#响应
{
  "data": {
    "hero": {
      "name": "R2-D2",
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

参考

https://www.apollographql.com/docs/react/data/fragments/

https://graphql.org/learn/queries/

https://www.youtube.com/watch?v=PQvux9OAaBE

以上为GraohQL基础知识,今天开个头,后面会继续

目录
相关文章
|
4月前
|
安全 JavaScript 前端开发
赏金猎人必学站点(梯外)
赏金猎人必学站点(梯外)
|
7月前
|
SQL 安全 测试技术
花无涯带你走进黑客世界之好用的渗透测试神器
隔着屏幕的祝福送给大家,祝大家端午安康,我就不群发骚扰了,看到的都好运 -。- 安全研究者对网站或者应用程序进行渗透测试而不用任何自动化工具似乎已越来越难。 花无涯带你走进黑客世界 2 学习渗透技术
|
SQL Oracle 安全
PortSwigger之SQL注入实验室笔记(一)
PortSwigger之SQL注入实验室笔记
218 0
PortSwigger之SQL注入实验室笔记(一)
|
SQL 安全 Oracle
PortSwigger之SQL注入实验室笔记(二)
PortSwigger之SQL注入实验室笔记
283 0
PortSwigger之SQL注入实验室笔记(二)
|
前端开发 安全
漏洞赏金猎人笔记-GraphQL-III
前面介绍了query、mutation这两种类型的操作,今天将要介绍最后一种类型的操作:subscription
303 0
漏洞赏金猎人笔记-GraphQL-III
|
安全 API 网络架构
漏洞赏金猎人笔记-GraphQL-II
上一节我们学习了GraphQL的一些基础知识,本文继续深入研究,从对比的角度来切入,方便读者理解. Mutation 在GraphQL中,只有两种类型的操作,就是queries 和 mutations. 如果说query类似于REST中的GET操作,那么Mutation就好比REST中的DELETE, PUT,PATCH方法,笔者用一句简单的话来概括一下: query用来查询服务端的数据,而mutation用来修改服务端的数据
197 0
漏洞赏金猎人笔记-GraphQL-II
|
数据采集 域名解析 XML
漏洞猎人赏金笔记-如何编写Bug Bounty自动化脚本
前言 本文原文作者为@pry0cc,本文主要是对原文相关内容的提炼以及笔记,出于易读性考虑,笔者对很多地方做了一定量的注释或者删改(因为原文中的脚本存在一定问题)。 本文主要讲解的是经典的自动化信息搜集以及数据处理和漏洞扫描的流程.
412 0
漏洞猎人赏金笔记-如何编写Bug Bounty自动化脚本
|
XML 安全 Go
赏金猎人系列-如何测试sso相关的漏洞(II)
前言 本文承接前文:赏金猎人系列-如何测试sso相关的漏洞,继续梳理sso漏洞相关的测试方法.
129 0
|
安全 Shell
赏金猎人系列-如何测试sso相关的漏洞
前言 前面写过一篇有关sso绕过的相关文章:你所不知道的sso绕过tips,而本文主要总结的是sso漏洞相对比较系统的的测试方法,限于篇幅,这里会分为两篇来叙述,今天为第一篇;
222 0
|
Web App开发 安全 Java
Facebook 被曝雇用公司抹黑 TikTok;Spring 承认 RCE 大漏洞;Chrome 100 发布 | 思否周刊
Facebook 被曝雇用公司抹黑 TikTok;Spring 承认 RCE 大漏洞;Chrome 100 发布 | 思否周刊
161 0

热门文章

最新文章

相关实验场景

更多