API现状
过去几年,许多组织一直在推进数字化转型,而新冠疫情加快了这一进程。
API在这一转型过程中发挥着重要作用。作为数字化转型的一部分,其中许多组织如今表示自己是“API优先”型组织。“API优先”型组织在设计应用时,会先设计API,再以这些API为基础设计应用的其余部分。这样,应用便可利用其基础API与其他应用通信并从中检索信息。
这些组织通常会开发和使用API,以支持与外部组织的合作关系,缩短开发时间、降低开发成本,并增强内部系统、工具和团队之间的互操作性。
F5 Labs的《2021年应用策略现状报告》指出,API也是应用现代化的基石,可用于帮助改造和更新传统应用,使其支持更新、更具模块化特性的应用语言、工具和平台。此外,无论是正常API还是恶意API,如今都占据了Web总流量的绝大部分。
这就是API这把“双刃剑”的第一面。
API这把“双刃剑”的另一面是:据Gartner预测,到2022年,API滥用将成为最常见的攻击途径。攻击者意识到,API可能存在漏洞,甚至未受到某些组织的保护,因为这些组织依赖数据和信息的开放流动,在其应用与其他应用之间共享数据和信息。有时,这只是疏忽,却为攻击者提供了一个可快速、轻松入侵应用的入口。应对这种情况需要采取专门措施,例如原生支持行业使用的所有API协议和技术。
GraphQL API
GraphQL是一项相对较新的API技术,过去几年发展迅速,并持续受到关注。GraphQL由Facebook于2012年内部开发,现已成为Linux Foundation的一部分,正在解决REST API面临的重大挑战。越来越多的组织开始采用GraphQL而非REST或SOAP来开发API。
这些挑战包括数据获取不足和过度获取、无需新增API端点即可加快前端开发(GraphQL仅使用一个端点)、利用GraphQL查询实现出色的后端分析,以及采用结构化的模式和类型系统。
去年,GraphQL的行业采用率已超过22%1,覆盖了创新采用生命周期中的创新者、早期采用者和早期大众群体。
预计未来几年,GraphQL将成为API领域的主流标准之一。
GraphQL安全
然而,GraphQL的迅速发展和广泛采用也很快引起了网络攻击者的注意。其中一些攻击者已开始利用GraphQL生态系统中的漏洞,并着手开发相应的攻击工具。
针对使用GraphQL的API,攻击技术既包括传统的SQL注入,也包括利用GraphQL规范披露API相关数据并借此牟利的新型攻击。
此外,还出现了利用基于GraphQL构建的API快速耗尽服务器资源的新型拒绝服务(DoS)攻击方法。
从Advanced WAF v16.1开始,F5原生支持保护GraphQL API。
首先,F5开发了对GraphQL流量的原生解析功能,以便应用Advanced WAF攻击特征。
一方面,此方法会在有效负载的正确位置检测攻击(对值运行攻击特征匹配);另一方面,它还会避免因在GraphQL请求的错误部分运行攻击特征匹配而产生误报。
其次,F5会创建GraphQL策略模板和内容配置文件,并将其纳入应用安全策略。
在这个新的内容配置文件中,用户可以配置参数的总长度和值长度,并根据策略对其加以限制。
此外,还可以配置最大结构深度,以消除可能导致DoS攻击的递归GraphQL查询;还可以配置最大批量查询数,以限制单个HTTP请求中不同GraphQL查询的数量。
还可以强制限制内省查询,否则此类查询可能帮助攻击者了解API结构,从而提高其成功入侵应用的可能性。

为应对此问题,F5还新增了对声明式策略配置的支持,并可使用Behavioral DoS功能防御大流量DoS攻击,以及使用F5 Advanced WAF中的DataGuard功能过滤响应。
总而言之,GraphQL为创建和管理API提供了新方式,有助于推动现有传统应用的现代化,并支持数字化转型。但一如既往,更多威胁会利用任何新技术中的薄弱环节发起攻击,稍有不慎便可能措手不及。
立即使用F5 Advanced WAF保护GraphQL API!
如需了解更多信息,请查看我们在DevCentral上发布的文章以及我们的YouTube Lightboard Lesson视频。
1 2020 年 API 现状报告,Postman
相关博客文章
Thingbot正转变为攻击平台
Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。
借助F5全新Quick Start,在AWS上快速开展业务
在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。