API 代表应用程序编程接口,一段时间以来一直在为我们的大多数现代数字解决方案提供支持。从社交网络通信到金融交易、检查天气预报和交通拥堵,API 在幕后工作,为我们提供有价值的见解并执行关键交易。
API 也变得越来越普遍,最近有一个 报告 显示过去 12 个月 API 总流量大幅增加 321%。但这种使用量的增加也导致了网络威胁的相应增加,API 攻击在同一时间段内增加了 681%。
什么是 API?
API 是一种允许两个不同的应用程序相互通信的软件。一个应用程序向另一个应用程序发送请求并接收响应以执行其特定任务。 API 将定义独立于其实现的功能,并构成开发软件的构建块。
简而言之,API 是两个软件系统相互交互的一种方式。
例如,考虑一个可以让您搜索航班的应用程序。输入选项并单击“预订”按钮后,该应用程序仍需要在航空公司的数据库中检查座位可用性和费用。该应用程序能够从航空公司的 API 中提取此数据并将其返回给您以继续您的预订。
主流的API协议有哪些?
为了使 API 能够在系统之间进行交互,它必须交换数据和特定命令。这种交换由一组协议和体系结构管理,这些协议和体系结构可能因个人用例而异。一些比较主流的 API 协议包括:
- REST(Representational State Transfer)架构: 作为最流行的协议之一,REST 通过分离 API 的前端和后端来工作。它也是“无状态的”,这意味着在请求之间不存储任何数据或状态。基于 REST 构建的 API 被称为“RESTful API”。
- SOAP(简单对象访问协议): 这是一个通常用于创建 Web API 的标准,支持各种互联网协议,如 HTTP、SMTP 和 TCP。它比 RESTful API 更加结构化、控制和定义。
- gRPC(谷歌远程过程调用): 由谷歌开发的开源框架,能够在大多数环境中运行。它的独特之处在于开发人员能够定义自己的自定义功能。
- GRAPHQL(图查询语言):由 Facebook 开发。 GRAPHQL 像数据库查询语言一样从服务器查询数据。由于仅根据查询请求检索明确请求的数据,而不是导入整个包,因此节省了时间和资源。
什么是 API 安全性?
API 安全涉及保护 API 完整性和防止恶意攻击的措施和解决方案。它涉及调查和减轻 API 中的安全风险和漏洞的流程。
如果 API 不安全,黑客可能会利用它来窃取敏感数据,从而使组织在财务上和声誉上受损。 API 安全性中使用了各种技术,包括速率限制、身份验证和授权。但除了这些技术之外,它还需要企业采用一种安全文化,这种文化涵盖整个软件开发和 API 工作流程。
为什么 API 安全很重要?
API 安全已成为当今网络安全的重要组成部分,这主要是因为它们在 Web 和移动应用程序以及 SaaS 产品中的广泛使用。这些应用程序可以在银行业、零售业、娱乐业、医疗保健业甚至交通运输业的大多数基本用例中找到。依赖 API 的应用程序还涉及许多面向客户的门户和敏感数据的收集,包括个人身份信息 (PII)。
更复杂的是,大多数企业正在为这些应用程序转向基于云的存储和计算。虽然这确实使应用程序可以从任何地方和任何设备访问,但它们也受到 云计算安全挑战,因为 API 可能成为黑客利用身份验证和破坏网络的一种方式。这使得 API 安全成为企业的基本要求
API认证方式有哪些?
企业可以依靠一些 API 身份验证方法来加强安全性。这些包括:
开放授权(0Auth)
OAuth 是一种开放标准,它允许 Facebook 或 Twitter 等第三方服务获取最终用户的帐户详细信息,而不会暴露密码等敏感字段。它实质上为最终用户提供了一种中介服务,通过为服务提供一个访问令牌来确认用户已授权共享帐户信息。
多重身份验证 (MFA)
MFA 是一种身份验证形式,需要多种方法来验证用户的凭据。例如,除了密码之外,此方法还要求通过电子邮件或短信发送给用户的密码必须在进行身份验证之前进行确认。
传输层安全 (TLS)
TLS 是一种广泛使用的安全协议,它在相互通信的两个应用程序之间提供身份验证、隐私和数据完整性。它用于涉及通过网络安全交换数据的 Web 浏览器和应用程序,例如浏览会话期间、文件传输、IP 语音 (VoIO) 通信等。
安全断言标记语言 (SAML)
SAML 是另一个用于安全共享数据的开放标准,涉及用户身份、身份验证和授权。它使用可扩展标记语言 (XML) 标准实施,并为单点登录 (SSO) 实施提供框架。
什么是顶级 API 安全威胁?
随着 API 使用量的增加,加上网络攻击的复杂程度不断提高,企业必须提防各种 API 安全威胁。开放 Web 应用程序安全项目 (OWASP) 是一个为网络安全从业者提供信息和资源的在线社区,列出了 2019 年十大 API 安全威胁,其中包括以下内容:
损坏的用户身份验证
当身份验证机制实施不当时,就会出现这些威胁。这允许攻击者破坏身份验证令牌或利用实现缺陷来冒充其他用户的身份,从而危及 API 的安全性。
注射
在将不受信任的数据发送到查询中的解释器的情况下,会出现注入缺陷。这些可能涉及 SQL、NoSQL、命令注入等攻击,这些攻击会诱使解释器在未经适当授权的情况下执行命令或访问数据。
损坏的对象级授权
当您拥有接受用户输入以使用 API 访问数据源的函数时,它可能会使端点暴露于攻击之下。这些功能需要在这些对象级别合并授权,以防止端点成为目标。
API 安全性如何运作?
API 安全性通过强制执行身份验证和授权的关键要素来实现。首先,请求身份验证以验证客户端应用程序的身份是否安全以及是否具有使用 API 的权限。在此之后,应用程序必须通过授权,这决定了它在与 API 交互时可以访问哪些数据和操作。
API 安全最佳实践
由于 API 涉及应用程序之间的通信,这些应用程序通常会接收用户输入以检索敏感数据,因此它们可能成为不同类型的中间人攻击的目标。为防止这种情况,您应该遵循这些基本的 API 安全最佳实践。
寻找漏洞
确定 API 生命周期中的薄弱点,并寻找可被基于签名的攻击(如 SQL 注入)利用的特定漏洞。遵循标准 漏洞扫描 技术可以帮助发现这些弱点。
使用令牌进行访问控制
安全令牌可以是保护 API 的另一种方式。它们的工作原理是在授予访问权限之前要求对令牌进行身份验证,任何未通过身份验证的程序或用户都将被拒绝。
在 API 通信中使用加密
加密是一种久经考验的安全措施,可确保只有拥有正确密钥的程序或用户才能解密通信。它通过确保不拥有密钥的未授权用户无法读取数据来保护 API。
设置配额和限制
限制和配额可有效抵御分布式拒绝服务 (DDoS) 攻击等攻击,此类攻击旨在通过发送大量数据使系统不堪重负。这些配额限制数据传输速度并阻止 DDoS 攻击并保持系统正常运行。