
当前,越来越多的公司开始使用
GraphQL 。 这是一种相对较新的技术(更确切地说,它是一种查询语言),旨在解决现有的
REST问题。
如果您不熟悉
GraphQL ,建议从以下资源开始:
在本文中,我想分享一种在GraphQL API中查找漏洞的工具。 如果您在GraphQL API中寻找漏洞,那么您可能会遇到以下问题:
- 而不是文档,您拥有一个庞大的无法读取的JSON(GraphQL模式)。
- 该Web应用程序仅使用GraphQL API的一部分,因此您看不到所有数据和端点。
解决这些问题的好帮手是
GraphQL Voyager ,它呈现了GraphQL模式。 可视化极大地促进了对GraphQL API的理解,并有助于更快地发现漏洞。
为什么要使用GraphQL Voyager?
在寻找漏洞之前,我们想了解使用GraphQL API可以获得哪些数据以及可以执行哪些操作。 通常,将没有文档页面,因为GraphQL本身包含文档。 您可以使用特殊请求获取文档,该请求返回GraphQL模式,该模式包含有关GraphQL API的所有公共信息(有关如何执行此操作的进一步信息)。
通常,模式是一个巨大的JSON,仅通过阅读就很难理解API。 另一件事是相同JSON的视觉表示:
JSON与IMAGE如何使用GraphQL Voyager?
首先,您需要找到GraphQL API所在的URL。 有几种方法可以做到这一点:
- 查看来自客户端(浏览器,移动应用程序)的请求。
- 遍历GraphQL的标准URL。 例如:/ graphql,/ api / graphql,...(更多网址可在此处https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e )。
- 在文档( https://developer.github.com/v4/ )或新闻( https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53 )中找到提及。
找到GraphQL API的URL后,就可以继续使用GraphQL Voyager。 这很简单。 例如,您可以通过三个步骤来可视化
SWAPI GraphQL :
步骤1.复制自省查询(返回模式的查询):
- 转到https://apis.guru/graphql-voyager/ 。
- 单击“自定义架构”。
- 单击“复制自省查询”。
步骤2.运行自省查询:
- 转到https://graphql.imtqy.com/swapi-graphql 。
- 将自省查询插入查询(页面左侧)。
- 提交请求。
步骤3.复制结果图(页面右侧)并将其粘贴到Voyager中。
注意 :具体步骤可能因一个API的不同而异,因为 GraphQL中的查询可以以不同的方式实现。
之后,您将拥有一个直观的界面,其中包含:带有对象的图形,它们的字段和对象之间的关系。
现在更清楚了如果您有很大的计划,请不要惊慌。 GraphQL API和REST API一样,可以具有很多功能,因此,尽管演示方便,但仍然需要花费一些时间来研究所有细节。
结论
在测试GraphQL API时,GraphQL Voyager是必不可少的工具。 有了它,您可以查看整个图片并了解如何使用GraphQL API。
如果添加比较两个方案的功能,则可以使Voyager更好。 想法是跟踪GraphQL中的更改并在发生更改时将其可视化。 这将有助于快速了解新功能或修改旧功能。
我
在GitHub上为此功能创建了一个
票证 。 您可以通过以下方式协助开发:
- (简易版)为功能投票。 因此,将优先发展它。
- (硬版)自己编写代码,因为 GraphQL Voyager具有开源代码 。