【翻译】使用OpenAPI规范进行安全的API设计

摘要:
API安全性是网络安全的重中之重。这导致了API攻击的激增。API预期范围之外的任何调用以及API预期返回范围之外的任何响应都将被自动拒绝。让我们看一下OpenAPI规范的特定部分及其在安全性中的作用。注意:我们将在此处的示例中使用YAML格式和OpenAPI版本3,但是JSON与该格式一样好,并且可以在版本2中找到类似的方式来指定API行为。不用说,身份验证和授权对于API安全性极为重要。幸运的是,OpenAPI允许您使用自己的自定义对象和属性对其进行扩展。

API安全性是网络安全的重中之重。诸如云原生应用程序,无服务器,微服务,单页面应用程序以及移动和物联网设备等新兴趋势和技术已导致API的激增。应用程序组件不再是在单个进程中在一台机器上彼此通信的内部对象,而是通过网络相互通信的API。
这显着增加了攻击面。此外,通过发现和攻击后端API,攻击者通常可以绕过前端控件,直接访问敏感数据和关键内部组件。这导致了API攻击的激增。每周,新闻中都会报道新的API漏洞。OWASP现在有专门针对API的十大漏洞的单独列表。而Gartner估计,到2022,API都将成为头号攻击向量。
为了解决这个问题,公司越来越多地转向积极安全 模式。他们定义了预期的API行为,确保定义足够严格和详细,以使其有意义,测试实现以符合该定义,然后在使用API期间强制执行该定义。API预期范围之外的任何调用以及API预期返回范围之外的任何响应都将被自动拒绝。
【翻译】使用OpenAPI规范进行安全的API设计第1张
与传统应用程序不同,API实际上具有一种在标准的机器可读模型中定义其预期输入和输出的方法。具体来说,对于当今最流行的API类型(REST API),此合同格式为OpenAPI。它最初是为文档目的而创建的Swagger标准,后来被Linux基金会下的OpenAPI Initiative采纳。当今市场上的大多数开发和API工具要么本机使用OpenAPI,要么以该格式支持导入和导出。
让我们看一下OpenAPI规范的特定部分及其在安全性中的作用。
注意: 我们将在此处的示例中使用YAML格式和OpenAPI版本3,但是JSON与该格式一样好,并且可以在版本2(也称为Swagger)中找到类似的方式来指定API行为。

路径

API路径是API定义中最基本的部分。它们与服务器URL和基本路径一起,记录了API客户端应调用的URL:
【翻译】使用OpenAPI规范进行安全的API设计第2张
在OpenAPI规范中,路径是必填的。完整记录服务器公开的所有API和API路径可防止攻击者发起路径遍历攻击或查找影子端点:暂存,非生产性和旧式端点。

有效载荷

请求和响应都可能在正文中包含数据。REST API通常使用JSON作为交换数据的格式。尽管不是强制性的,但还是强烈建议您严格描述此类请求和响应的模式:
【翻译】使用OpenAPI规范进行安全的API设计第3张
我们还应该将有效负载的类型明确指定为对象,并将其additionalProperties值设置为false。这些阻止将其他属性插入到调用中。
这些额外的步骤可防止攻击者将其获得的所有属性盲目地保存到数据库,并无意中覆盖敏感字段时,进行批量分配攻击。最近,流行的容器注册表系统Harbor发生了这种API漏洞,攻击者可以通过在API调用中仅包含”has_admin_role”:true来更改自己的个人资料详细信息,从而使自己成为管理员。

认证与授权

身份验证很重要,OpenAPI可以定义您的API应该具有的安全方案(基本,承载,API密钥,OAuth2,OpenID Connect等):
【翻译】使用OpenAPI规范进行安全的API设计第4张
然后将其应用于任何级别(整个API或仅特定操作):
【翻译】使用OpenAPI规范进行安全的API设计第5张
您也可以在上面的示例中看到,该标准本机支持范围。
不用说,身份验证和授权对于API安全性极为重要。如此多的API被黑客入侵的原因是: 它们本来是“内部的”,并且开发人员从未想到攻击者会找到进入网络并调用它们的方法。身份验证的设计没有遵循安全规范。

传输

在这个时代,应该始终加密流量并使用HTTPS而不是HTTP。
HTTP的使用会使得网站容易受到中间人攻击,在这种中间人攻击中,流量将被拦截,并且攻击者冒充合法的API使用者。

工具

我们将在这里简要介绍的另一个方面是工具支持。本文并不是对工具的评论,因此我们仅提供一些指导。您可以自行选择如Eolinker安全网关或者其他的安全工具使用。
API安全规范只有在实际使用它的情况下才有用,并且根据生命周期的阶段,其用法也有所不同。
【翻译】使用OpenAPI规范进行安全的API设计第6张
API防火墙和API网关可以基于合同(在外部(南北)和内部(东西方)级别)实施“积极安全性”,如下图所示:
【翻译】使用OpenAPI规范进行安全的API设计第7张

结论

本文整理了大部分可能会出现的API攻击方式,但是也请意识到,OpenAPI仍然是一个不断发展的标准,并且它对API安全性的覆盖也在不断发展。
幸运的是,OpenAPI允许您使用自己的自定义对象和属性对其进行扩展。您可以自己执行此操作,也可以使用您选择的API安全网关或API管理工具提供的自定义扩展名进行操作。随着API攻击的增加,确保您受到保护的最有效方法是使用“积极安全性”模型,在整个API生命周期中使用定义明确,经过测试和强制执行的规范。
翻译:Eolinker——国内3万+企业在用的API管理和网关工具
【翻译】使用OpenAPI规范进行安全的API设计第8张

免责声明:文章转载自《【翻译】使用OpenAPI规范进行安全的API设计》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue.js 类型(数字、整数、小数、负数、手机号、座机号等)校验规则Weibull分布(韦伯分布、威布尔分布)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

odoo里的开发规范

1、模块命名[驼峰命名方法] res开头的是:resources   常见模型:res.users,   res.company,    res.partner,   res.config.settings   等。。。 @api.modeldef _selection_grade(self): res_grade = [] grade_lis...

微服务最强开源流量网关Kong

前言在微服务架构中,由于系统和服务的细分,导致系统结构变得非常复杂, 为了跨平台,为了统一集中管理api,同时为了不暴露后置服务。甚至有时候需要对请求进行一些安全、负载均衡、限流、熔断、灰度等中间操作,基于此类种种的客观需求一个类似综合前置的系统就产生了,这就是API网关(API Gateway)。API网关作为分散在各个业务系统微服务的API聚合点和统一...

alluxio2.0特性-预览

项目地址 https://github.com/Alluxio/alluxio/tree/branch-2.0-preview 2.0版本-构思和设计 支持超大规模数据工作负载 Alluxio作为计算和存储之间的数据编排层,使数据移动并且可以跨多个不同的存储系统访问:HDFS,对象存储,网络附加存储,随着时间的推移,Alluxio需要的元数据支持规模 提供...

测试百度地图输入GPS经纬度显示位置API

1.我的GPS获取的经纬度做度分秒转换后为 34.636055,112.40832 2.百度API介绍 GPS的坐标是WGS84,所以测试API http://api.map.baidu.com/geocoder?location=34.636055,112.40832&coord_type=wgs84&output=html&s...

【C#】使用OWIN创建Web API

OWIN的介绍 OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦,使得便携式 .NET Web 应用以及跨平台的愿望成为现实, 标准的 OWIN 应用可以在任何 OWIN 兼容的服务器上运行,...

VIP视频解析接口,送给有需要的人

VIP视频解析接口:http://api.bbbbbb.me/jx/?url=http://www.a305.org/weixin.php?url=http://api.91exp.com/svip/?url=http://api.bbbbbb.me/ipsign/player.php?v=http://api.ledboke.com/vip/?url=h...