应用程序编程接口 (API) 的类型及其安全漏洞。
什么是应用程序编程接口。
API 是 Application Programming Interface 的缩写,API 是一组定义的规则,解释了计算机或应用程序如何相互通信。API 在应用程序和 Web 服务器之间实现,充当中间层,处理系统之间的数据传输。
API 的类型
主要有四种类型的 API
开放 API− 开源应用程序编程接口,也称为公共 API,由于它们是公开可用的,因此没有访问这些类型 API 的限制。
任何开发人员都可以访问开放 API。
合作伙伴 API− 此 API 公开给特定人员。开发人员需要特定的权限或许可证才能访问此类型的 API,因为它们不是公开可用的。
只有授权的开发人员才能访问合作伙伴 API。
内部 API− 也称为私有 API,此类型的 API 将对外部用户隐藏。内部 API 用于公司内部使用。许多组织在不同的内部团队之间使用此类型的 API 来改进其产品和服务。
只有内部团队才能访问内部 API。
复合 API− 此类型的 API 用于组合不同的数据和服务 API。通过使用这些服务,开发人员可以在单个调用中访问多个端点。其主要用途是加快执行过程并提高 Web 接口上最终用户的性能。
复合 API 用于组合多个 API。
API 架构和协议的类型
我们有三种不同类型的 API。
REST(表述性状态转移)− REST 与其他 Web 服务不同,它不是协议,而是一套用于可扩展、轻量级和易于使用的 API 的指南。REST API 将遵循 REST 指南,并用于将数据从服务器传输到请求用户。
表述性状态转移是一组用于轻量级、可扩展 Web API 的指南。
SOAP(简单对象访问协议)− 它是一种用于跨网络传输数据的协议,可用于构建 API。SOAP 由万维网联盟 (W3C) 标准化,并使用 XML 编码数据。
这使得 SOAP API 比 REST API 更安全,尽管这些指南使它们更依赖代码且更难以在休闲使用中实现。SOAP 用于需要高安全性的内部数据传输。
SOAP 是一种用于更安全 API 的更严格的协议。
RPC(远程过程调用)− 用于两台计算机之间的通信。如果在一台机器上运行的服务请求另一台机器的数据。这是一种 API,可帮助您调用任何远程过程并获取结果。
XML-RPC− 也称为远程过程调用中的可扩展标记语言。此协议使用特定的 XML 格式传输数据,并且比 SOAP 更旧更简单。最终用户通过向开发 XML-RPC 的服务器发送 HTTP 请求来执行 RPC,并接收 HTTP 作为响应。
JSON-RPC− 它与 XML-RPC 类似,因为它们的工作方式相同,只是此协议使用 JSON 格式而不是 XML 格式。
API 中的漏洞
漏洞− 漏洞是系统或设备代码中的漏洞或错误。它被利用来损害存储在系统中的数据的 CIA(机密性、完整性和可用性),通过未经授权的访问导致拒绝服务或窃取数据。
OWASP 前 10 大 API 漏洞列表
对象级授权被破坏
对象级授权被破坏 (BOLA) 也称为不安全的直接对象引用 (IDOR)。当服务器没有正确验证当前授权用户或未授权用户是否正在访问数据以读取、更新或删除他们没有权限的对象时,就会出现此问题。
用户身份验证被破坏
API 身份验证的实现不当允许攻击者预测其他用户的身份。更笼统地说,用户身份验证被破坏发生在 API 具有身份验证系统但不起作用,或者已实现的身份验证系统在某些情况下失败,从而允许攻击者将自己伪装成经过身份验证的用户。
过度的数据泄露
API 应仅限于向前端客户端提供数据访问权限,但有时开发人员会犯错误或采取一些简单的捷径,并开发提供对客户端所有数据的访问权限的 API。当这些 API 提供超出用户需求的数据访问权限时,我们将其称为过度数据泄露。
缺乏资源和速率限制
如果 API 未受到过量请求或有效负载大小的保护。攻击者可能会利用此漏洞进行拒绝服务 (DoS) 和身份验证缺陷,例如暴力破解攻击。
功能级授权被破坏
如果 API 允许客户端根据需要使用用户级或管理员级 API。如果攻击者找出“隐藏的”管理员 API 方法的管理员访问权限并直接访问它们。
批量赋值
如果 API 从客户端获取数据并在没有正确过滤白名单属性或指南的情况下存储它。攻击者可能会尝试预测对象属性或在他们的请求中添加其他对象参数,以阅读文档,或检查 API 端点是否有线索,了解在哪里查找修改他们不应该影响后端存储的数据对象的参数的开口。
安全配置错误
缺乏安全配置并向客户端提供 API 服务器的访问权限,这允许攻击者利用漏洞获取对服务器的访问权限。
注入
攻击者将能够构建包含 SQL、NoSQL、LDAP、OS 或其他命令的 API 调用,API 请求及其背后的后端会盲目执行该 API 请求,从而导致注入。
资产管理不当
攻击者发现 API 的未更新版本(例如,暂存、测试、测试版或早期版本)没有像 API 的生产版本那样得到很好的保护或保护,并且攻击者利用这些版本发动攻击。
日志记录和监控不足
缺乏对传入服务器的数据和网络流量以及日志活动进行适当的监控,以及在未经授权的访问或活动发生时发出警报,将为攻击者打开大门。