恶意|API查询语言GraphQL的优秀安全实践


恶意|API查询语言GraphQL的优秀安全实践
文章图片

作为最为流行的查询语言之一 , GraphQL虽然能够支持创建灵活的API , 但是它也容易放过、甚至给应用程序服务器带来各种恶意的查询 。 一些常见的GraphQL漏洞往往会在一致性评估和缺陷缓解等方面埋下各种安全隐患 。 在本文中 , 我们将深入和您探讨GraphQL的各种常见漏洞 , 以及降低此类风险的优秀实践 。
什么是GraphQL? 作为一种服务器端运行时(runtime)的API查询语言 , GraphQL能够优先返回客户端请求的数据 。 该语言不但能够让API变得轻巧、灵活 , 而且对于开发人员十分友好且方便他们进行快速开发 。 而作为REST API框架的替代方案 , GraphQL允许开发团队在单个接口的调用中 , 创建可访问来自多个数据源的请求 。 该语言可以被部署到集成开发环境(IDE)中 , 并提供描述用户该如何请求数据的语法 。 可以说 , GraphQL既提供了一个可预测运行的框架 , 又允许开发人员自行选择构建API的方法 。
GraphQL的常见安全问答 API攻击普遍吗?
随着API普遍被使用 , 针对它的攻击尝试在数量上也在持续增加 。 这些攻击通常依赖于通过应用程序的编程接口 , 去自动化执行各种恶意操作 。 根据Wallarm.com的一份统计报告 , 截至2019年 , 恶意自动化攻击主机、及其网络已占互联网的20% 。 这使得保护API成为应用程序安全措施的一个关键环节 。
是否有简化GraphQL安全性的工具?
目前 , 业界有多种开源的项目 , 可以简化GraphQL API的创建和管理 。 其中包括:Apollo client、Offix、Graphback和 OpenAPI-to-GraphQL 。
GraphQL如何处理身份验证和授权?
由于GraphQL是一种服务器端运行时查询语言 , 因此它并不处理授权的逻辑 。 不过 , 该平台允许开发人员 , 在向客户端公开API之前 , 在业务逻辑层中实施身份验证和授权的检查 。
GraphQL的具体安全性问题 凭借着其丰富的平台功能 , 以及能够简化API查询的创建过程 , GraphQL已被誉为现代应用开发技术栈的关键组件 。 而为了协助企业减少GraphQL API的攻击面 , 我们可以通过如下方面来管控GraphQL平台的固有安全问题:
自定义标量的验证不足【恶意|API查询语言GraphQL的优秀安全实践】在使用GraphQL时 , 原始数据往往是由标量类型(scalar type)表示的 。 GraphQL API通常支持五种基本的标量数据类型 , 即:Int、Float、Boolean、ID和String 。 虽然这个基本集合对于简单的API来说已经足够了 , 但是GraphQL也允许开发人员针对特殊的原始数据API类型需求 , 自行创建标量类型 。 当然 , 开发人员需要针对此类配置 , 额外地增加用户输入的验证、以及清理的过程 。 相反 , 如果未能实现此类功能 , 则会危及到GraphQL标量类型的安全性 。

推荐阅读