何为API安全
API安全是保护WebAPI免受攻击的关键。构建API(通常以微服务为基础)已经成为一种日益增长的趋势。许多移动应用程序和网站使用API发送和检索数据,即使最终用户并不知道这一事实。API与传统的Web应用程序不同,这些差异可能会导致严重的安全问题。API与传统Web应用程序的区别是什么?
上面的图片说明了API不同于传统的Web应用程序的根本原因在哪:曾经对一个服务器的请求变成了对数十个或数百个微服务的成千上百个请求。以前,工作相对容易,维护一个大型应用程序即可。现在,必须保护数百个小型web应用程序及其访问的数据。身份验证和授权看起来不一样。您最喜欢的框架的内置会话管理可能已经失效。此外,必须知道所有这些API端点的位置、它们运行的版本以及当需求增加时如何扩展它们。最后,对开发和部署环境的更改会导致恶意参与者攻击应用程序的方式发生变化。你熟悉攻击者攻击API的新方法吗?API面临的最大威胁是什么?
OWASPAPI十大项目概述了API的10个风险。认证与授权的风险获得第一
身份验证和授权是最危险的API安全漏洞。对许多开发人员来说,API中的身份验证和授权是一个全新的世界。开发框架不管理会话,而是由应用程序传递带有索赔的JSONWeb令牌(JWT)。简而言之,每个微服务在代表其执行任何工作之前都必须验证调用者的身份和权限。随着API数量的增长,开发人员很有可能会错过一些授权检查,而在您最意想不到的时候,数据泄露就会出现。API端点随处可见
微服务的爆炸式增长让你的基础设施充满了大量的端点,Docker容器不太适合。api很容易消失。无论是由开发人员出于测试目的而开发的,还是仅仅是一个废弃的旧版本,一个"影子api"都可能成为攻击点。它们可能不安全,如果您不知道它们仍然公开暴露,就可能有人在您不知情的情况下攻击它。真实API漏洞的例子
让我们通过观察真实的漏洞来说明API和web应用程序安全性之间的区别。Shopify“Collaborator”的漏洞安全研究人员Uzsunny在Shopify的“协作者”功能中发现了一个关键缺陷,该缺陷允许攻击者在任何商店中分配自己的“协作者”角色。此特性将解锁所有类型的管理功能。结果是,处理这个协作者业务逻辑的API端点没有验证将协作者添加到商店的请求是否来自商店管理器。因此,任何人都可以使用正确的参数调用该端点,并获得对Shopify平台上任何商店的管理权限。[具体细节可以参考这篇文章](