构建高效API的10个API设计最佳实践
API网关:防范BFLA失效风险的策略
API 无处不在,用于访问后端服务和敏感信息,例如银行详细信息、健康报告、财务数据、公司敏感信息等。这使得易受攻击或暴露的 API 容易产生攻击面,并增加了可能造成严重破坏的 API 攻击风险。如果您了解 API 安全的技术泡沫,那么您一定听说过 OWASP API 安全项目。它包含威胁 API 的十大漏洞,而破坏功能级别授权 (BFLA) 就是其中之一。
什么是破坏功能级别授权攻击?
大多数组织为不同部门的员工提供各种访问级别,例如文档、营销、开发等。当在 API 级别处理访问控制不当时,功能级授权 (BFLA) 被破坏的可能性会增加。基本上,当 API 的分层授权机制存在错误时,就会发生 BFLA。攻击者旨在修改 API 调用以获得对更高级别(例如管理级别)的未经授权的访问权限,然后执行管理任务,例如添加、修改或删除数据。让我们通过以下场景来了解 BFLA 攻击:考虑一个获取用户信息的 API 示例,如下所示:
如果攻击者尝试修改删除方法,将路径中的用户关键字更改为管理员,则攻击者获得管理员角色的访问权限,并可以执行删除操作。
由于服务器端缺乏 API 访问控制处理,攻击成功。
BFLA 攻击示例
假设有一个在线银行应用程序允许用户在账户之间转账。该应用程序具有不同的授权级别,普通用户只能在自己的账户内转账,而管理员可以在任何账户之间转账。在这种情况下,如果应用程序在处理资金转账请求之前未能检查用户的角色或权限,则存在 BFLA 漏洞。例如,如果普通用户试图将资金从一个账户转移到不属于他们的另一个账户,应用程序应该拒绝该请求。然而,由于功能级别授权受损,应用程序可能会忽略此检查,从而允许未经授权的交易继续进行。攻击者可以通过操纵请求参数或使用代理工具拦截请求来利用此漏洞。通过将目标帐号更改为另一个用户的帐户,他们可以诱骗应用程序将资金从受害者的帐户转移到自己的帐户。
如何预防 BFLA 攻击?
为了缓解 BFLA 漏洞,必须在每个功能或特性级别实施强大的授权检查,确保用户在尝试执行操作时得到正确的身份验证和授权。API 网关可以帮助实现这一点。
API 网关的以下功能有助于防止破坏功能级别授权攻击:
- 集中授权:每个发往后端的请求都会经过 API 网关。我们可以在网关级别强制执行授权逻辑或策略。因此,在所有 API 端点上,您都可以保证可靠且一致的执行。
- 访问控制策略:在网关中,您可以定义不同的细粒度操作控制策略。用户还可以定义基于角色的访问控制,以便每个角色对资源的访问权限有限,最终有助于防止未经授权的访问。
- 速率限制:API 网关速率限制功能允许同时来自客户端的有限数量的请求,从而防止过度使用该功能并协助分析 API 调用中的奇怪模式。
文章来源:The Risks of Broken Function Level Authorization(BFLA) and How to Mitigate Them with an API Gateway