API 无处不在,几乎为一切提供动力。随着应用程序变得更加分布式,API 的使用量和流量继续增长,这要归功于大量 SaaS 和其他基于 Web 的服务,这些服务消耗了现代软件环境。API 为开发人员提供了显著的优势,使他们能够利用现有功能、加速应用程序开发并解锁新的可能性。然而,随着应用程序和 API 组合变得越来越复杂,保持对所有现有 API 的全面理解成为一项重大挑战。在庞大的微服务和互连系统中,API 可能很快就会变得模糊或被遗忘。
这种可见性的缺乏会带来潜在的问题。如果隐藏或未记录的 API 包含漏洞,它可能会导致冗余的开发工作,阻碍有效的代码重用,并会带来安全风险。这就是 API 发现可以提供帮助的地方。API 发现是开发人员和安全团队识别、编目和评估 API 的关键过程。利用 API 发现的好处包括更好的 API 治理、支持有关 API 使用情况的明智决策,以及帮助主动缓解安全威胁。
在这篇博客中,我们将探讨 API 发现的基础知识,包括它的含义、识别记录和隐藏 API 的技术,以及发现对安全性和效率的重要性。最后,我们将简要介绍用于简化流程的工具,包括 StackHawk 的 API 发现功能。让我们开始吧!
API 发现是什么意思?
用最基本的术语来说,API 发现是在特定环境中识别、记录和理解 API 的过程。随着 API 的发现,它们可能是内部开发的 API、第三方提供商提供的 API,以及最关键的可能是隐藏或未记录的 API。
将 API 发现视为创建所有 API 的最新清单,或者更广泛地说,创建系统内的数字“连接点”,这是有道理的。API 发现过程涉及发现详细信息,例如:
- 端点:应用程序用于与 API 交互的 URL。
- 方法:支持的操作(GET、POST、PUT、DELETE 等)。
- 参数:API 可以接受的数据及其生成的响应。
- 身份验证/授权:API 如何确保只有允许的用户或应用程序才能访问它。
为什么它对开发人员很重要
关于为什么 API 发现很重要,它对开发人员和组织有帮助的原因有很多。其中一些好处包括:
- 防止重新发明轮子:Discovery 可以增强 API 的可见性,揭示解决您正在解决的问题的现有 API,从而节省您的开发时间和资源。
- 促进创新:了解哪些 API 可用,可以为应用程序和集成解锁新思路。
- 简化协作:共享 API 目录允许团队在项目之间重用定义明确的 API,从而促进团队合作。
此外,拥有完整的 API 清单使组织能够了解哪些 API 正在使用,哪些未使用。如果 API 未使用且未进行维护,则可能会带来重大安全风险,如果 API 未在发现过程中被发现,则该风险可能是未知的。无论大小,如果您正在使用和构建 API,API 发现都应该成为您工具包的一部分。
是什么让 API 可被发现?
发现 API 涉及许多潜在的过程,我们将在下一节中讨论这些过程。但是,首先要考虑一些使 API 可被发现的因素,这一点很重要。让我们来看看一些使 API 可被发现的最佳实践和关键方面。
清晰全面的文档
编写良好的文档是 API 可发现性的基石。它应该全面概述 API 的用途、如何使用它、它支持的不同方法、它接受的参数、预期的响应、可能的错误代码,甚至说明性示例。将此文档视为 API 的用户友好指南。这一点还包括遵循众所周知的文档实践,例如为您的 API 创建 OpenAPI 规范 (OAS)。
开发者门户
如果你想让 API 很容易被发现,通过开发者门户公开它是一个好主意。开发人员门户就像 API 的中央市场。它列出了可用的 API,提供了强大的搜索功能,并且通常包含以交互方式试用 API 的功能,例如 Swagger UI。这使开发人员能够快速找到他们需要的 API,并轻松地进行试验。
描述性和标准化命名约定
终结点和参数的一致命名约定极大地提高了可发现性。命名和参数应该是可预测的,并且很容易让开发人员理解你的 API 的结构。除了一致性之外,使用有意义的名称还有助于开发人员在阅读完整文档之前就预测 API 的功能。
遵守设计标准
采用 REST 或 GraphQL 等广泛采用的标准使 API 对开发人员更具可预测性。这些标准列出了常见的模式和期望,从而缩短了开发人员与 API 集成和使用您的 API 的学习曲线,并提高了可发现性。
这些要点更多地反映了 API 发现的手动方法。在这些情况下,遵循上述准则可以使内部或外部的开发人员快速查看可用的 API,并使他们能够有效地使用 API。但是,如何发现隐藏的 API?这就是自动化可以派上用场的地方。接下来,让我们比较一下自动和手动 API 发现。
手动 API 发现与自动 API 发现
如前所述,有两种主要方法可以进行 API 发现。两者都有特定的用例和与之相关的方法。让我们看看手动和自动 API 发现工具和技术之间的区别。
手动方法
使用 API 的开发人员可能熟悉手动方法。其中许多方法需要技术背景,并专注于在使用 API 之前发现 API,或者弄清楚代码库中当前使用了哪些 API。开发人员可以通过以下几种方式手动发现可用或正在使用的 API。
- 代码审查:仔细检查源代码,以确定 API 的定义和使用方式。
- 网络流量分析:检查网络数据包以跟踪应用程序之间的通信模式,揭示 API 使用情况。
- 引用现有文档:查看任何可用的 API 文档、系统架构图或开发人员说明。
这些手动技术在特定情况下很有帮助,但也有局限性。它们可能是劳动密集型和耗时的,并且容易丢失隐藏的 API,这些 API 不会在代码或网络流量中留下清晰的痕迹。
自动化方法
需要使用专门的 API 发现工具来执行 API 发现的自动化方法。这些可能涉及 API 管理平台、API 安全平台和其他支持可发现性的工具中内置的工具。这些工具旨在扫描系统、分析网络模式,甚至探测端点以主动发现 API。它们提供了一种全面、可扩展且高效的方法来识别记录的和隐藏的 API。
大多数可用于利用自动化 API 发现的工具都位于 API 管理和安全平台中。
- API 管理平台和网关:网关(例如 Kong 或 Apigee)通常包含 API 发现功能,因为它们可以控制流量并提供对 API 使用情况的见解。
- 安全扫描程序:像 StackHawk 这样的专业工具会主动扫描漏洞并映射您的 API 端点,从而暴露出以前未知的端点。
自动化 API 发现工具通常为组织提供显着优势,可以保持对其 API 库存的完整和最新理解,并改善其 API 安全态势。接下来,让我们通过了解是什么让 API 发现对现代组织很重要来进一步探讨这些好处。
API 发现的重要性
API 发现在管理、保护和最大限度地发挥 API 基础设施的潜力方面发挥着至关重要的作用。从开发人员到参与企业业务和合规性方面的人员,API 发现都提供了广泛的好处。以下是 API 发现可能产生影响的一些关键领域的细分。
- 安全漏洞检测:通过 API 发现,您可以全面了解环境中使用的所有 API。这包括未记录或被遗忘的端点(“影子 API”),它们是攻击的主要目标。维护准确的 API 清单可以减少攻击面,并主动解决 OWASP API 前十名中概述的潜在 BFLA、BOLA 和其他漏洞。
- 提高合规性:受法规约束的行业,例如采用 HIPAA 的医疗保健或采用 PCI DSS 的金融业,通常对敏感数据访问和控制有严格的要求。API 发现可帮助您映射 API 中的数据流,从而简化证明符合这些不同法规的过程。
- 减少开发摩擦:API 发现有助于更快、更高效的开发实践。通过使开发人员能够轻松找到和理解现有的 API 功能(包括内部和第三方),他们避免了重新发明轮子和复制 API 功能。
- 加速创新:可发现的 API 目录使开发人员能够在服务之间快速创建连接,并使开发人员和架构师能够了解企业内可用的现有功能。了解哪些 API 可用及其功能可以更快、更轻松地实现创新。
- 伙伴关系和生态系统发展:如果您的 API 将拥有第三方用户,那么 API 发现对于引入合作伙伴至关重要。有据可查且易于发现的 API 可以打开商机,并使外部开发人员能够使用它们并与您的组织无缝协作。
将 API 发现整合到 API 开发生命周期和安全实践中对于构建强大且安全的应用程序至关重要。从安全角度来看,不使用 API 发现工具的最大缺点之一是隐藏的 API 可能会暴露您不知道的漏洞。接下来,让我们来看看不同类型的隐藏 API 是什么,以及它们可能产生的影响。
隐藏 API 有哪些不同类型?
隐藏的 API 是存在于系统中但未编目或包含在官方文档中的 API。此类 API 可能会成为一个重大的安全和管理问题,因为它们可能会从安全测试和修补的裂缝中溜走。以下是一些需要注意的常见隐藏 API 类型:
影子 API
这些是无意中暴露的 API,通常由开发人员在测试期间创建或用于临时目的。影子 API 可能不遵循既定的安全标准或文档实践,从而导致攻击者利用潜在漏洞。
僵尸 API
这些是过时或已弃用的 API,旨在停用,但在系统中保持活动状态。不良的版本控制做法和对停用过程的跟踪会导致这些 API 保留在可用 API 的组合中,如果未正确修补或删除,则存在潜在的安全风险。
流氓 API
这些 API 是故意创建和隐藏的,通常带有恶意意图。作为通过 API 进入系统的后门,流氓 API 可能被设计成规避安全控制或未经授权泄露数据。
API 发现工具可以帮助发现隐藏的 API 并修复其中存在的任何安全漏洞。这些 API 的安全风险可能很普遍,并在您的安全工作中留下巨大的漏洞。考虑到这一点,让我们在下一节中进一步探讨这些特定的安全风险。
隐藏API的安全风险
如前所述,隐藏的 API 会带来重大的 API 安全挑战,因为它们通常存在于标准安全监控和治理实践之外。如果某些 API 完全脱离了覆盖范围,那么即使是最佳的安全实践也是无效的。通过在您的投资组合中存在隐藏的 API,以下是它们带来的一些关键风险:
- 未修补的漏洞:隐藏的 API 可能包含未被发现和未修补的漏洞,尤其是不再积极维护的僵尸 API。这使它们很容易成为攻击者的目标。
- 扩大的攻击面:隐藏的 API 增加了恶意行为者可以利用的可用攻击媒介。他们可能会通过反复试验、代码泄漏或自动扫描来发现这些 API。
- 数据暴露:安全性差或未记录的 API 可能成为未经授权的数据访问或泄漏的网关。攻击者可能会使用隐藏的 API 来检索敏感数据或在不被发现的情况下操纵系统。
- 违规行为:隐藏的 API 可能会导致不遵守 GDPR 等数据隐私法规或行业特定标准。这是因为确保对未记录的 API 进行适当的授权和访问控制变得困难,因为对它们的监督很少。
考虑到这些因素,就很容易理解为什么主动发现隐藏的 API 至关重要。通过跟踪组织的 API 组合中的每一个 API,您可以增强降低这些风险并保持强大的安全态势的能力。