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