业务安全(1)API安全

API安全

一、背景简介

1.1 API

应用程序编程接口(API)是一组允许软件组件进行交互的协议。中间接口通常用于简化开发,使软件团队能够重复使用代码。API还通过将应用程序与它们所运行的基础设施脱钩来抽象系统之间的功能。尽管API在现代商业中的好处和用例不断增加,但固有的安全挑战带来了各种安全风险。

1.2 API安全

一个API代表了一组服务,允许一个程序与另一个外部或内部程序进行通信。当我们谈论API安全时,我们通常指的是保护应用程序的后端服务,包括其数据库、用户管理系统或其他与数据存储交互的组件。API安全包括采用多种工具和做法来保护技术栈的完整性。一个强大的安全的API包括一个组织使用的API和使用这些API的服务。这包括防止恶意行为者访问敏感信息或代表你采取你不希望他们执行的行动。

不幸的是,虽然API是现代应用程序的一个重要组成部分,但它们是攻击者访问敏感信息的一个常见目标。在使用API时,了解第三方应用程序如何通过接口输送数据是至关重要的。此外,随着API日益成为一个攻击载体,API安全措施有助于安全团队评估安全风险,并有一个全面的计划来保护它们。

由于API是公开访问的,它们是窃取敏感信息的常见目标,包括应用逻辑、用户凭证、信用卡号码等。此外,API端点的漏洞也会被恶意行为者利用,以获得对系统或网络的未授权访问,进行其他形式的攻击,如跨站脚本和代码注入。在线网络应用安全项目(OWASP)发布了基于风险的十大漏洞建议,以确保网络API的安全。这些包括:

1.3 最常见的API安全风险

OWASP API安全 top 10 2032变化解读
  • https://github.com/OWASP/API-Security
  • https://owasp.org/www-project-api-security/

在开发过程中以及每当API更新时,应解决以下API安全风险:

  • 破坏对象级授权。当请求可以访问或修改请求者不应该访问的数据时,例如能够通过篡改请求中的标识符访问另一个用户的帐户,就会发生BOLA。
  • 破坏函数级授权。当没有实现最小权限原则(POLP)时就会出现这种情况,通常是由于过于复杂的访问控制策略造成的。它导致攻击者能够执行敏感命令或访问针对特权帐户的端点。
  • 用户身份验证失败。与BOLA一样,如果身份验证过程被破坏,攻击者可以一次性甚至永久地冒充另一个用户。
  • 过多的数据暴露。API对请求的响应通常返回比相关或必要的数据更多的数据。尽管数据可能不会显示给用户,但可以很容易地检查这些数据,并可能导致敏感信息的潜在暴露。
  • 资产管理不当。API的开发和部署通常是快节奏的,在急于发布新的或更新的API时,经常会遗漏完整的文档。这将导致暴露的和幽灵端点,以及对旧api如何工作和需要实现的理解不足。
  • 缺乏资源和速率限制。API端点通常对互联网开放,如果对请求的数量或大小没有限制,则对DoS和暴力攻击开放。
  • 注入缺陷。如果没有正确地解析和验证请求数据,攻击者可能会发起命令或SQL注入攻击来访问它或在未经授权的情况下执行恶意命令。
  • 大规模作业。软件开发框架经常证明,只需一行代码就可以将从在线表单接收到的所有数据插入到数据库或对象中,这被称为批量赋值,从而无需编写重复的表单映射代码。如果没有指定哪些数据是可接受的,就会打开各种攻击向量。

二、技术现状

API 安全性最佳实践

参考文献