API 安全性的目的是确保 API 请求在服务处于负载状态时得到身份验证、授权、验证和清理。 API 安全与普通 Web 服务器的不同之处在于,现代应用程序或服务具有使用多种协议和请求格式的各种 API 端点。 尽管如此,典型的 Web 服务器只需要保护几个基本端口和请求。
API 安全性不仅由网络安全规则提供,还由编码良好的 API 提供。 安全性也起着重要作用 应用安全测试 因为它处理并拒绝不正确和恶意的入站请求,以确保暴露的数据和资源的机密性、可用性和完整性。
最常见的 API 安全风险
在设计和实施完整的API安全测试计划或更新API时,应注意以下API安全风险:
损坏的对象级授权
当请求能够访问或修改请求者不应访问的数据(例如通过篡改请求标识符)时,就会发生损坏的对象级授权。
过多的数据暴露
API 对请求的回答经常返回比相关或必要的更多信息。 即使数据没有暴露给用户,也可以很容易地检查它,从而可能暴露关键信息。
资产管理不当
API 的开发和部署通常很快,在提供新的或更新的 API 的过程中,适当的文档经常被忽视。 这会导致被忽视的漏洞,例如暴露的端点和幽灵端点,以及对旧 API 工作原理的不完全理解。
缺乏资源和速率限制
由于缺乏资源和速率限制,API 端点经常暴露在互联网上,如果不存在对请求数量或数量的限制,它们很容易受到 DoS 和暴力攻击。
注射缺陷
如果请求数据未被正确解析和验证,攻击者可能会使用命令或 SQL注入攻击 未经授权获取访问权限或执行恶意指令。
批量分配
批量分配问题发生在自动将用户输入引导至对象或程序变量的 API 中。 虽然此功能使代码开发更容易,但某些用户可能会初始化和覆盖服务器端变量,从而使应用程序面临风险。 攻击者主要通过在创建请求时猜测和提供额外的对象特征来利用这一点。
使用 API 安全最佳实践保护 API
以下最佳实践可能有助于开发和维护组织的 API 安全性:
使用 API 网关
一个 API网关 将客户端接口与一组后端 API 分开,为 API 服务的可用性和可扩展性提供集中资源。 API管理平台除了管理众多的API服务外,还涵盖了遥测、限速、用户认证等常用功能,保障内部服务安全。
网关充当反向代理看门人,接受所有 API 调用,协调支持它们所需的资源,并在身份验证后返回必要的结果。
认证和授权
要限制对 API 资源的访问,您必须彻底识别所有链接的用户和设备。 客户端应用程序经常用于在 API 调用中使用令牌来验证客户端。 要验证 API 流量并设置访问控制规则或授权类型来指示哪些用户、组和角色可以访问特定的 API 服务,请使用 OAuth 2.0、OpenID Connect 和 JSON Web 令牌等协议。
实施足够的输入验证
API 客户端数据通常不应被信任,因为身份验证服务器可能会执行来自未经身份验证的用户或应用程序服务的恶意脚本。 安全团队应在客户端和服务器端实施输入验证协议,以避免出现此问题。
使用限速
速率限制通过防止 DoS 和暴力攻击来帮助管理 REST API 安全。 软限制由开发人员在某些 API 中设置,允许客户端在短时间内超出请求限制。 设置超时是一种简单的 API 安全推荐做法,可以处理同步和异步查询。
使用节流
节流是将 API 置于临时状态以允许其评估每个请求的过程。 它广泛用于打击垃圾邮件或防止滥用或拒绝服务攻击。 因此,在开发节流功能时必须考虑两个主要考虑因素:每个用户应该允许多少数据以及何时应该强制执行限制。
验证数据
永远不要假设 API 数据已被正确清理或检查。 相反,实施您自己的服务器端数据清理和验证方法,以避免常见的注入问题和跨站点请求伪造攻击。 Postman 等调试工具 Chrome DevTools 可以帮助检查 API 的数据流并跟踪问题和异常。
扫描 API 漏洞
为了保证API服务的长期安全,需要在程序生命周期的各个阶段开启API自动扫描、漏洞发现和修补。
为 REST API 使用 HTTPS 或 TLS
HTTPS 和传输层安全性 (TLS) 是在 Web 浏览器和服务器之间发送加密数据的安全方法。 除了其他类型的信息外,HTTPS 还保护传输中的身份验证凭据。 每个 API 都应将 HTTPS 用于完整性、保密性和真实性,作为最重要的实践之一。 此外,安全团队应考虑采用相互验证的客户端证书,为关键数据和服务提供额外保护。
结论
API 容易受到各种方式的攻击,并且 API 设计中的潜在弱点是巨大的。 因此,保护 API 安全性至关重要。 API 的安全性可以通过许多过程来确保,上面列出了其中的几个过程。 因此,为了保护 API 的安全性免受外部威胁和利用,您需要了解可能使用的可靠资源、专业知识和实践。 在这篇文章中,我们介绍了最常见的 API 安全威胁以及如何使用安全最佳实践来解决这些威胁。