API在现代应用架构中发挥着关键作用,但也日益成为攻击者的目标。了解常见的API安全薄弱环节,并探索主动保护API免受攻击和入侵的策略。
了解API安全
应用程序编程接口(API)是现代应用开发的基础,可帮助应用与其他应用、服务或平台进行通信和数据交换。企业可以轻松集成外部平台和第三方服务,并通过连接各种组件来构建综合解决方案。这种模块化应用开发方式使开发人员能够利用现有服务和功能,促进代码复用,缩短开发周期并提高工作效率。API能够将业务逻辑解耦并分散,因此成为现代应用的基石,也是推动传统应用向基于API的架构演进的机制。
API发展时间线
与计算领域的其他方面一样,过去25年来,随着开发人员不断探索提升性能和可靠性的方法,API技术也在持续演进。API的设计理念和数据表示方式均已发生变化,数据和流量的保护方式也随之演变。主流API架构的发展历程大致如下:
- SOAP API(1998–2010 年)。简单对象访问协议(SOAP)API使用数字签名和加密XML格式数据,在消息级别实施安全保护。消息级安全通常比下文所述REST API架构风格中的安全机制更全面。不过,尽管消息级安全因可移植性而广受认可,如今仅见于旧式Web服务。
- REST API(2010 年至今)。过去十年间,表述性状态转移(REST)已成为广泛采用的API架构风格。如今,大多数Web API都是REST API。在REST中,资源通过唯一的HTTP URI进行标识,访问控制规则则基于HTTP动词与HTTP URI的组合。
- GraphQL API(2020年至未来)GraphQL是一种新兴的API查询语言。它允许前端开发人员根据应用需求自定义API查询,从而掌握更大的控制权。所有资源均通过单一URI访问。凭借这种灵活性和可控性,GraphQL日益普及。
不同类型的API
可根据可访问性、用途和目标受众,将API分为多种类型。
- 私有API,也称为内部API,由组织开发和维护,供内部使用,用于实现组织基础设施中不同组件或服务之间的通信。私有API不供外部开发者使用。
- 公共API旨在提供对服务、平台或应用程序特定功能或数据的访问,并向外部开发者、第三方软件应用程序和公众开放。公共API通常用于扩展产品或服务的功能,并鼓励第三方开发者构建应用程序或集成。
- 合作伙伴API是公共API的一个子集,仅供组织的特定合作伙伴、关联方、客户或B2B(企业对企业)协作方使用,以便对特定功能或数据提供受控访问。通常需要通过身份验证和授权机制才能访问这些API。
- 第三方API由外部组织或个人开发,提供可集成到其他应用程序中的功能。开发人员可以通过这些API访问外部服务、库或数据源,以增强自己的应用程序。第三方API广泛用于软件开发,通过利用现有服务或功能来节省时间和精力。例如,地图API可显示自定义地图,天气API可在旅行或旅游网页上显示当地天气预报。
为何需要API安全
API还会扩大风险面。由于API在多云架构中相互依赖,尤其可能带来难以预见的风险。这种现象称为“API蔓延”,可能对API生态系统的安全构成极大威胁。与Web应用一样,API也容易遭受漏洞利用、自动化威胁滥用、拒绝服务、错误配置,以及绕过身份验证和授权控制的攻击。
现代微服务架构日益普及,可能会加剧API蔓延,因为此类架构使用大量API与接口通信(南北向流量),并在微服务之间通信(东西向流量)。
应对API蔓延的策略包括:
- 实施API治理策略
- 为API发现创建单一可信信息源
- 确保版本控制和文档记录规范
- 提供API流量指标和可见性
- 大规模实施API安全防护
要深入了解这些策略及其实施方法,请阅读《应对API蔓延的5种方法(以及为何值得关注)》。
API安全措施不足带来的风险
API本身会暴露关键业务逻辑和敏感信息,例如用户数据、身份验证凭据和金融交易,因此日益成为攻击者的目标,尤其是登录、创建账户、添加到购物车和转账等功能。攻击者可能会利用API作为入口,利用漏洞或薄弱环节,或暴露底层基础设施和资源。
API安全的主要类型
必须采取强有力的API安全措施,保护数据免遭未经授权的访问、篡改或泄露,从而保障隐私,维护用户和利益相关方的信任,并确保API的机密性、完整性和可用性。
不过,由于API和应用面临许多相同的威胁,安全团队应考虑采用一体化的应用和API安全策略。根据OWASP《2023年API安全十大风险》,应用和API面临的共同安全风险在实施安全解决方案时值得关注。例如:
- 薄弱的身份验证和授权控制
- 配置错误
- 业务逻辑滥用(凭据填充、账户接管)
- 服务器端请求伪造(SSRF)
这促成了一种集成式应用和API安全策略,让应用和API共享通用功能。为应对同一威胁或风险而运行双倍数量的服务,不仅效率低下,还会增加不必要的复杂性。集成式应用和API安全策略在运营、财务和架构方面更为合理。
API安全的主要用例包括以下几种。
身份验证和授权
身份验证和授权是API安全的基本要素。身份验证用于核实尝试访问API的用户或系统的身份,确保发出请求的实体与其所声明的身份一致。常见的身份验证方法包括用户名和密码、API密钥、令牌和生物特征识别。授权用于确定通过身份验证的用户或系统可以在API中执行哪些操作。这需要定义访问控制规则、角色和权限。基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)是常用的授权模型。通过实施适当的授权检查,组织可以确保通过身份验证的客户端具备访问特定资源或执行特定操作所需的权限。精细化访问控制可以限制对敏感API端点或数据以及相关对象和功能的访问。
开放授权(OAuth)协议是实施强身份验证和授权实践的关键组成部分。借助OAuth,用户无需直接向第三方应用程序提供用户名和密码。OAuth会改为授予访问令牌,用于表示有限且范围明确的权限,从而降低凭据被盗和滥用的风险。API提供商可以通过作用域和权限定义精细的访问控制,确保第三方应用程序只能访问用户授权的特定资源并执行相应操作,从而降低未经授权访问的风险。
身份验证和授权机制实施不当可能给API安全带来多种威胁,包括:
对象级授权失效。当应用未能在对象或数据级别正确实施访问控制时,就会出现此安全漏洞。攻击者可借此操纵或绕过授权检查,未经授权访问应用中的特定对象或数据。任何接收对象ID并对该对象执行操作的API端点,都应实施对象级授权检查,以验证已登录用户是否有权对所请求的对象执行所请求的操作。
身份验证失效。API中的身份验证机制往往实施不当,使攻击者能够未经授权访问用户账户或敏感数据,或执行未经授权的操作。
对象属性级授权失效。当API未能在对象属性级别正确实施访问控制和授权检查时,就会出现此威胁。如果API端点暴露了被视为敏感且不应由用户读取的对象属性,就容易受到此类攻击。这种利用方式有时称为“过度数据暴露”。如果API端点允许用户更改、添加或删除敏感对象的属性值,也容易受到此类攻击。这种利用方式有时称为“批量赋值”。
- 功能级授权失效。当API未能在功能或操作级别正确执行授权检查,导致攻击者能够访问未经授权的功能时,就会出现此类威胁。现代应用可能会定义多种功能角色和组,并涉及复杂的用户层级关系,攻击者可能会利用这些因素,因此正确实施授权检查可能较为复杂。
- 不受限制地访问敏感业务流程。当API缺少适当的访问控制或授权检查时,攻击者便可自动访问由该API支持的敏感业务流程,从而发起此类攻击。如果目标的Web应用已受到反自动化防御措施的充分保护,攻击者通常会使用复杂的自动化工具包调整攻击方式,并可能转而攻击API背后的业务逻辑。
JSON Web令牌(JWT)
JSON Web Token(JWT)是一种开放标准方法,用于以紧凑、自包含且安全的方式在双方之间传输数据。JWT广泛用于基于令牌的身份验证和授权。借助JWT,用户或客户端可以向API服务器证明其身份和权限,而无需在每次请求时重复发送凭据(例如用户名和密码),从而避免通过网络暴露敏感信息。这种基于令牌的方法可缩短会遭受会话劫持等潜在攻击的暴露时间,从而增强安全性。JWT可以撤销,并包含过期时间,过期后即失效。这有助于降低令牌无限期有效的风险。
JWT发现和验证是核实JWT合法性的关键机制,有助于防止未经授权的访问或篡改。JWT发现是指查找并确认用于验证JWT的JSON编码公钥或证书,而JWT验证则确保JWT颁发者与API的预期颁发者一致。这有助于确认令牌来自可信来源。
数据加密
API采用多种加密技术来保护客户端与服务器之间传输的数据,确保传输中所交换信息的机密性和完整性。用于保护API请求和响应的主要加密协议是HTTPS,即基于安全套接字层(SSL)或传输层安全性(TLS)的HTTP。该协议会加密客户端与服务器之间传输的数据,防止恶意第三方窃听和篡改。SSL/TLS同时使用非对称加密和对称加密来保护传输中数据的机密性和完整性。非对称加密用于在客户端与服务器之间建立安全会话,对称加密则用于在安全会话中交换数据。这可防止攻击者查看或篡改两个节点之间交换的数据,在此场景中即客户端与API服务器之间的数据。
然而,为“东西向”流量提供端到端加密可能颇具挑战性。“东西向”流量是指网络内部,或组织基础设施中不同服务或组件之间的机器到机器API调用。端到端加密需要生成、分发和管理多个加密密钥。确保所有通信组件都能在适当的时间获得正确的密钥十分复杂,在大规模环境中尤其如此,并且可能会增加延迟,限制端到端加密实施的可扩展性。
输入验证和清理
输入验证和清理有助于确保从外部来源(例如用户输入或API)接收的数据安全、可靠且不含恶意内容,从而帮助防范注入攻击和其他漏洞利用。验证规则用于定义有效数据的判定标准。这些规则可以包括数据类型检查(例如数字、字母、电子邮件格式)、长度限制、格式要求和自定义业务逻辑。如果输入验证失败(即数据不符合定义的标准),应用程序将拒绝该输入,阻止其被进一步处理。
输入清理是指对数据进行清理或过滤,以移除或消除可能有害或恶意的内容。输入验证和清理有助于保护系统免受多种攻击,尤其是注入攻击。当攻击者将不可信或恶意数据插入命令语言或查询语言,或者应用程序未对用户提供的数据进行验证、过滤或清理,进而导致恶意命令被执行时,就会发生此类攻击。注入攻击包括NoSQL注入、操作系统命令注入、LDAP注入和SQL注入攻击,以及跨站脚本攻击(XSS)。在跨站脚本攻击中,攻击者会将JavaScript等恶意客户端脚本注入其他用户浏览的网页。
速率限制与节流
这些机制控制客户端向API发出请求的速率,以防止API遭到滥用或过度使用,避免资源消耗过多,并保护API免受潜在的拒绝服务(DoS)攻击。
审计跟踪和日志记录
审计跟踪和日志通过捕获API请求与响应的详细信息,帮助了解API活动,包括请求发起者、访问的端点以及请求发生的时间。通过分析日志,安全团队可以检测异常或可疑的API活动模式,例如反复登录失败、意外的数据访问或异常流量激增。这些异常可能表明发生了黑客攻击企图或数据泄露等安全事件。如果发生安全漏洞或可疑活动,审计跟踪和日志还可作为重要的取证数据来源。
API安全最佳实践
必须将安全融入API生命周期的每个阶段,包括设计、开发和部署。虽然发现工具(常见于自上而下的安全方法)是必要组件,但要妥善保障API安全,首先应从构建和部署API的团队着手。这种应用和API安全方法称为“左移”,即在软件开发生命周期(SDLC)的早期应用安全控制,并可在CI/CD流水线中实现自动化。
以下API安全最佳实践重点介绍用于缓解API特有漏洞和安全风险的策略与流程。
安全的API设计
设计安全的API需要采用可靠的安全控制措施,包括实施强身份验证机制,以验证与API交互的用户和系统的身份。使用授权控制来定义并强制执行访问权限,确保只有获得授权的实体才能执行特定操作。遵循最小权限原则,仅向用户和系统授予完成任务所需的最低权限。避免授予过多权限,否则可能导致API被滥用或利用。使用SSL/TLS等强加密技术,保护通过网络传输的数据。对从客户端及其他来源接收的所有输入进行验证和清理,以防范注入攻击等常见安全漏洞。
此外,保护API免受漏洞攻击至关重要。这包括定期进行补丁管理,使API的所有依赖项、库和框架保持最新,以修复已知的安全弱点。为降低DDoS攻击风险,应实施速率限制和流量节制机制,限制指定时间范围内可发出的请求数量。业务逻辑滥用也是API安全面临的一项重大漏洞。此类攻击利用应用的底层逻辑和流程来实现恶意目的。例如,攻击者可能操纵API的业务逻辑,未经授权访问特定功能或资源,或窃取敏感数据。严格的访问控制和授权机制有助于确保只有获得授权的用户才能访问特定的API业务逻辑功能。
一般而言,应遵循“最小惊讶原则”。也就是说,在设计API时,应选择最符合用户或开发者预期的方法和惯例。API用户应清楚了解安全功能的工作原理以及需要采取的操作。当安全功能符合用户预期和既定行业实践时,用户出错或误解这些功能的可能性会更低。
运行时检测
运行时检测系统利用机器学习和行为分析建立API正常行为基线,并在检测到偏离该基线的情况时发出警报。这些异常可能包括异常的API请求模式、意外的数据流和未经授权的访问尝试。运行时检测旨在实时识别并响应正在发生的安全威胁和漏洞,而不是依赖在开发或部署期间实施的静态安全措施。
API网关的使用
API网关在API生态系统中充当保护层,为API流量提供集中式控制、安全防护和管理。作为安全和管理层,API网关可保护底层API基础设施,使其免受许多常见威胁和运营挑战的影响,包括实施身份验证和授权策略,以及通过流量过滤、速率限制和节流来防止API滥用。API网关会捕获API流量和活动的详细日志,因此还能提供实时日志记录和监控功能,这对于审计或事件调查至关重要。
跨源资源共享(CORS)
CORS是由Web浏览器实施的一组安全策略,用于控制和管理Web应用程序通过JavaScript等客户端技术发起的跨源请求(即不同域或源之间的请求)。CORS通过强制执行一组HTTP标头,规定Web服务器应如何响应跨源请求。CORS既允许网页请求API、Web服务或托管在其他域上的资产并与这些资源交互,又能确保Web安全,因此至关重要。
在保护面向互联网开放的API时,务必使用CORS策略来控制允许访问API的域,确保只有受信任的域才能访问受保护的资源。避免使用过于宽松的设置,以免API遭受跨站请求伪造(CSRF)攻击及其他安全风险。
定期测试、监控和更新
定期测试、监控和软件修补是主动式API安全策略的重要组成部分。持续监控应重点包括按计划开展漏洞扫描和渗透测试,以帮助识别API中的薄弱环节、漏洞和错误配置;同时,通过静态代码分析和动态应用安全测试(DAST)评估API代码库和运行时行为中存在的安全弱点。应定期更新API技术栈中使用的软件组件,包括操作系统、Web服务器、库和框架,以修复已知漏洞,因为未修补的软件可能成为攻击者的主要目标。
API保护用例
电子商务和支付网关
电子商务公司和支付网关平台需要处理大量敏感数据和金融交易,因此,强大的API安全防护至关重要。电子商务企业在大多数客户触点中使用API,包括登录、商品搜索与展示、购物车、运费估算和支付处理。此外,API还能帮助企业提升客户体验,例如向老客户推荐新商品、跟踪评论和评分,以及与聊天机器人互动。
移动应用集成
API是连接移动应用与各种服务、数据源及第三方平台的桥梁,因此API安全对于移动应用集成至关重要。移动应用通常需要通过API与后端服务器或外部服务交换数据,而API可让应用以结构化方式请求和接收数据。确保移动应用与API安全交互,对于防止安全漏洞、保护身份验证和访问控制,以及维持应用及其所连接系统的整体安全态势至关重要。
医疗数据交换
医疗保健数据通常包含敏感的患者机密信息,例如病历、诊断结果、治疗方案和账单明细。API有助于医疗服务提供方、付款方及其他利益相关方共享敏感的患者信息。确保这些API的安全对于保护患者隐私、遵守医疗保健法规(例如美国的HIPAA)以及维护医疗保健数据的完整性至关重要。
金融服务与开放银行
强大的API安全是保障金融服务数据的机密性、完整性和可用性,以及开放银行解决方案正常运行的基本要求。API安全不仅在不同金融机构、支付服务提供商和金融科技公司之间安全交换金融数据方面发挥核心作用,还有助于满足欧盟《支付服务指令2》和美国PCI DSS等法规规定的数据加密和访问控制要求。此外,API安全在防范欺诈以及保护支持开放银行计划的第三方集成方面也发挥着关键作用。
物联网(IoT)生态系统
API安全是物联网的关键要素,可确保物联网设备、应用和服务安全通信、保护数据,并维护整个生态系统的完整性。物联网设备通过API彼此通信,并与边缘网关和云平台通信。API安全可确保设备与其他生态系统组件之间交换的数据保持机密、经过身份验证,并免遭未经授权的访问。物联网网络通常还包含大量具有唯一身份的设备,API安全可提供设备身份管理,以维护设备身份的完整性,并防止身份冒用或未经授权的访问。物联网生态系统还需要具备管理设备接入、配置、更新和安全停用的能力。API安全有助于支持整个设备生命周期的管理,包括安全的固件更新。
API安全的未来
API安全是一个不断变化的目标。随着技术格局的变化,以及网络威胁日益频繁且愈加复杂,API安全也在持续演进。以下是可能影响API安全未来发展的一些主要趋势。
API安全中的AI与机器学习
AI和机器学习(ML)凭借强大的处理能力,有望从根本上改变API安全。机器学习模型可以建立正常API使用模式的基线;偏离这些基线的行为及其他异常情况可触发警报或自动响应,从而帮助防范潜在的安全漏洞。AI还可以识别传统规则型系统可能遗漏的复杂攻击模式和零日漏洞。AI系统会不断提升智能水平,根据不断变化的威胁进行调整和演进,从而更有效地抵御新型复杂攻击,并有望根据历史数据和新兴趋势预测潜在安全威胁。这种主动方法可帮助安全团队在漏洞遭到利用之前进行处置。
API零信任架构
零信任模型倡导“从不信任,始终验证”的原则。应用于API安全时,这意味着将API端点和服务视为独立实体,每个请求都必须经过身份验证和授权。零信任假定,无论位于网络内部还是外部,任何实体默认都不应受到信任;资源访问权限应按需授予。对于API访问,需要实施最小权限原则,仅授予完成特定任务或履行特定角色所必需的权限,并根据需求变化定期审查和更新访问权限。即使已授予初始访问权限,零信任仍会持续验证设备、用户和应用,并根据行为和设备合规性重新评估信任级别。
区块链与去中心化API
区块链的核心特性是数据一旦添加到链上便不可篡改。这可确保通过API访问的数据不会被篡改,使恶意行为者几乎无法在不被发现的情况下更改数据。区块链还可以将资产、访问权限或凭证代币化,用于管理和控制API访问,从而简化访问控制管理。API可以使用智能合约执行访问控制策略,确保只有获得授权的用户或应用程序才能与特定API资源交互。通过将数据和交易去中心化,区块链可减少对集中式服务器或数据库等单点故障的依赖,使攻击者更难破坏API安全。
F5如何提供帮助
API是现代应用开发的基础。通过连接多个组件,API使系统能够轻松集成外部平台和第三方服务,从而构建全面的解决方案。然而,API也会扩大应用的攻击面。尤其是在多云架构中,API之间相互依赖,可能带来难以预见的风险。因此,必须采取强有力的API安全措施,保护API免受攻击和入侵。
F5提供相关解决方案,帮助简化API管理并增强API安全性。F5 Web Application and API Protection (WAAP)解决方案通过全面的防护措施保护现代应用的整个攻击面,包括WAF、L3-L7 DDoS缓解和机器人防御,以抵御自动化威胁和欺诈。借助分布式平台,无论应用和API托管在何处,都能轻松部署一致的策略,并将安全防护扩展至整个应用和API环境。
F5 Distributed Cloud API Security可自动识别映射到应用的所有API端点(包括经常成为攻击者目标的影子API),从而保护API,并减少配置和部署API安全策略所需的时间。该解决方案利用AI和机器学习监控异常活动和行为,并实时阻止可疑请求和端点。通过Distributed Cloud API Security的SaaS门户,可以轻松进行管理并掌握整体情况。用户可通过该门户监控现代应用的API防护,并深入开展威胁分析、取证和故障排除。
F5 NGINX提供多种解决方案,帮助保护API并确保持续防护,其中包括F5 NGINX App and API Security Solutions,该解决方案通过全面防护减少安全漏洞,并降低贵组织遭受恶意用户攻击的风险。其优势包括第7层攻击防护、端到端加密、单点登录(SSO)、椭圆曲线密码学、API身份验证和DDoS缓解。
面向Kubernetes应用的F5 NGINX零信任安全解决方案可保护从边缘到云端的Kubernetes应用和API,且不会增加复杂性和开销。此外,F5 NGINX Plus可部署为企业级API网关,而F5 NGINX App Protect可提供WAF和DoS防护。

