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

美食网站要怎么做自己做相册的网站

美食网站要怎么做,自己做相册的网站,忻府网站建设,品牌网站建设 十蝌蚪小简介 判断GraphQL方式 判断一个网站是否使用了GraphQL API,可以通过以下几种方法: 1. 检查网络请求 查看请求端点 GraphQL 通常使用单一端点,常见路径如: /graphql/api/graphql/gql/query 观察请求特征 POST 请求为主&…

简介

判断GraphQL方式

判断一个网站是否使用了GraphQL API,可以通过以下几种方法:

1. 检查网络请求

查看请求端点

  • GraphQL 通常使用单一端点,常见路径如:
    • /graphql
    • /api/graphql
    • /gql
    • /query

观察请求特征

  • POST 请求为主(虽然 GET 也可能)
  • 请求体包含 queryvariablesoperationName 字段
  • Content-Type 通常是 application/json

2. 分析请求/响应结构

请求体特征

{"query": "{ user { id name email } }","variables": {},"operationName": "GetUser"
}

响应结构

{"data": {"user": {"id": "123","name": "John","email": "john@example.com"}},"errors": []
}

在这里插入图片描述

4. 使用浏览器开发者工具

打开 F12 开发者工具
切换到 Network 标签
执行网站操作,观察 XHR/Fetch 请求
查找包含 GraphQL 特征的请求
在这里插入图片描述

内省查询

  • 发送内省查询测试:
{__schema {types {name}}
}

通过综合使用这些方法,你通常能够准确判断一个网站是否使用了 GraphQL API。最直接的方法是通过浏览器开发者工具观察网络请求的模式和内容。

Schema

  1. GraphQL Schema 是 GraphQL 中定义数据模型和 API 结构的核心概念,它相当于数据的蓝图或契约,明确规定了客户端可以执行的操作以及可访问的数据类型。

  2. Schema 的本质作用是描述整个 API 的数据结构和操作能力,就像数据库的架构图一样,让客户端知道可以查询什么数据、如何查询,以及数据之间的关系。

  3. Schema 包含三种核心操作类型:query(查询操作,用于读取数据)、mutation(变更操作,用于修改数据)和 subscription(订阅操作,用于实时数据监听)。

type Book {
id: ID!
title: String!
author: String!
year: Int
}
  1. 完整 Schema 的构成需要将业务数据类型(如 Book)与操作类型结合。Query 类型是必需的,定义了所有可执行的查询操作;Mutation 类型是可选的,当需要修改数据时才定义;Subscription 类型则根据是否需要实时功能来决定是否定义。

Type

基于您提供的内容,我来整理总结 GraphQL Schema 中的 Type 系统:

GraphQL Type 系统概述

GraphQL Schema 通过 Type(类型) 来实现数据模式的抽象描述。每个 Type 由多个 Field(字段) 组成,而每个字段又指向特定的 Type,形成了完整的类型关系网。

Type 的分类

GraphQL 中的 Type 主要分为六类:ScalarObjectInterfaceUnionEnumInput,其中最重要的是前两种。

  1. Scalar Type(标量类型)

标量类型是 GraphQL 的基础数据类型,包括:

  • String:字符串类型
  • Int:整数类型
  • Float:浮点数类型
  • Boolean:布尔类型
  • ID:唯一标识符类型
  • Enum:枚举类型

非空标识:字段后添加 ! 符号表示该字段不能为空(必需字段)。例如 ID!String! 表示必需的 ID 和字符串字段。

除了内置标量类型,还可以根据需要声明自定义标量类型。

  1. Object Type(对象类型)
    对象类型用于表达复杂的数据结构,由多个字段组成。例如:
type Book {id: ID!title: String!author: String!year: Int
}

这里 Book 就是一个对象类型,包含 4 个字段,每个字段都指向相应的类型。
3. 字段类型的灵活性

字段的类型不仅可以是标量类型,还可以是其他对象类型,这样可以建立对象之间的关联关系:

type User {id: IDname: String
}type Book {id: ID!title: String!author: User  # 这里使用了对象类型 User
}

通过这种方式,可以构建出层次化、关联性的复杂数据模型,实现数据之间的引用和组合关系。

Operations

GraphQL 规范中主要包括三种操作类型,分别是:Query(查询,用于从服务器查询数据)、Mutation(变更,用于操作服务器上数据,包括:添加、修改、删除等)、Subscription(订阅),这三者也被称为root operation type,名为根操作类型。
虽然定义了Book类型,但是这个类型不能直接被访问和操作,需要通过规范中的 Query、Mutation、Subscription 三个根操作类型来实现,且这三个根操作类型需要显式的被定义,无法直接使用。

Introspection

Introspection(内省)是 GraphQL 的内置功能,是用于查询服务端已定义好的 Schema 有关的信息,且在内省系统中还内置了很多元数据类型,包括:__schema、__type、__typeKind、__field、__inputValue、__enumValue、__directive。
由于在真实环境中是无法知道目标 GraphQL Schema 所支持的查询类型和字段名,但可以通过内省查询来获取这些信息(类似于 Swagger API 说明文档)。除此之外,内省查询还会泄漏一些敏感信息,所以在真实环境中,记得禁用内省查询。
也可以直接通过 BurpSuite 内置的功能来进行内省查询。
在这里插入图片描述
在这里插入图片描述
如果目标禁用内省查询,可以通过工具 Clairvoyance 来进行自动化收集 API 信息。

Vulnerability

1.端点探测

通用端点名称
GraphQL 服务通常使用类似的端点后缀。测试 GraphQL 端点时,您应该尝试将通用查询发送到以下位置:
/graphql
/api
/api/graphql
/graphql/api
/graphql/graphql
在找到 GraphQL 端点后,可以通过简单的测试来探测目标是否使用 GraphQL 服务,请求类型为application/json,如果没有正确的回显,可以尝试不同的请求的方式以及不同的请求类型。

{“query”: “{}”}
{“query”: “{__schema}”}
{“query”: “{__typename}”}
{“query”: “{__schema{types{name}}}”}
{“query”: “{__schema{queryType{name}}}”}
{“query”: “{__schema{types{name,fields{name}}}}”}

或者直接使用burpsuite自带得GraphQL或者插件InQL
在这里插入图片描述

2. Info Gathering

由于在真实环境中是无法知道目标 GraphQL Schema 所支持的查询类型和字段名,但可以通过内省查询来获取这些信息(类似于 Swagger API 说明文档)。除此之外,内省查询还会泄漏一些敏感信息,所以在真实环境中,记得禁用内省查询。
在这里插入图片描述
内省查询的结果往往很长而难以处理,可以使用 graphql-voyager 来可视化 Schema 实体之间的关联。可通过在线网站来实现,地址:https://graphql-kit.com/graphql-voyager/。将内省查询的结果复制到箭头处即可。

http://www.dtcms.com/a/601412.html

相关文章:

  • 全国 网站备案 数量电子设计工程官网
  • 一、UDP以太网帧格式
  • 网络协议设计原则简介和资料推荐
  • 有哪些程序网站品牌和商标的区别
  • C语言编译器选择指南 | 初学者实用教程
  • 小智机器人MCP
  • 对于给不良网站发律师函如何做收银系统哪个软件好
  • 网站管理工作总结安阳县事业单位招聘2021
  • RK-Android11-修改系统的鼠标光标
  • vs2022 IDE扩展无法卸载/VSI 插件卸载及实例清理
  • 华为OD机试 双机位A卷 - 智能驾驶 (JAVA Python C++ JS GO)
  • 广州网站制作实力乐云seo怎么提高网站的流量
  • 开源工具 yt-dlp 超简易上手版
  • 郑州网站优化外包顾问上海网站建设 分类广告
  • SSM基于WEB的教学质量评价系统的设计与实现p9ak6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • PCB常用规则
  • Node.js 集成百度语音
  • 求一个网站开发接项目的平台做网站的外包需要分享客户信息
  • 怎么用PS做网站横幅wordpress 抽奖
  • 【开题答辩全过程】以 基于Vue.js和Node.js的在线旅游平网站的设计和实现为例,包含答辩的问题和答案
  • MySQL快速入门——用户管理
  • 中咨城建设计南京网站网站建设南昌
  • 大连网站制作流程在哪里可以免费自学seo课程
  • [智能体设计模式]第3章 并行化
  • Prisma 原生 SQL 多表联查完整指南
  • 哪个网站原创文章旅游集团网站建设
  • AI搜索不提你的品牌?从GEO诊断开始
  • Elasticsearch 7.6 安装 Jieba 中文分词插件完整教程
  • OpenCV 加载时出现 `no opencv_java451 in java.library.path` 错误
  • 【CCF-CSP】05-02日期计算