数据加密:HTTPS 对客户端和服务器之间传输的数据进行加密。它使用 TLS 或其前身 SSL 对通信进行加密。这种加密可确保用户数据、身份验证等敏感信息在传输过程中保持安全。如果没有 HTTPS,这些信息可能会被数据包嗅探等技术截获。
合规要求:许多监管标准,如 GDPR 和 PCI DSS,都要求使用 HTTPS 来保护用户的敏感信息。
SEO 要求:谷歌等搜索引擎会优先考虑支持 HTTPS 的网站和应用程序接口,认为它们更安全。
OAuth 2.0 对设计安全可靠的 API 至关重要,因为它能够在不共享用户凭证的情况下使用代理来访问资源。它还支持跨多个应用程序和服务的集成,促进了单点登录(SSO),允许用户进行一次身份验证来无缝访问多个服务或应用程序。
WebAuthn 不依赖于集中式服务器或密码数据库。它允许用户注册和使用自己的设备(如安全密钥或生物特征识别设备)进行身份验证,消除仅依赖密码的弱点。通过实现 WebAuthn,API 可以符合 FIDO 等安全标准,满足合规要求。
我们通常要针对系统开放的服务接口设计不同的访问权限。分级的 API Key 可以提供细粒度的访问控制。比如,在使用 Stripe 时,我们可以给“访问账户”指定一个只读 API Key,给“操作账户”指定另一个 API Key。
这一条和上一条相关。我们需要给系统内部的各种 API 接口设计访问授权,遵循“最小权限”原则。
在设计 API 时,需要估计大致容量,并针对容量来限流,从而保护系统。限流的好处有很多,比如防止 DDos 攻击,防止系统过载,合理分配系统资源等。
API 版本控制提供了一种结构化的 API 生命周期管理方法,将 API 的管理提升到代码一个级别,同时确保向后兼容性。它使开发人员能够引入新功能而不会破坏用户对于旧版本的依赖。
白名单指定并仅允许预先批准的 IP 地址或用户访问 API。这有助于防止常见的安全威胁,如未经授权的访问、数据泄露、注入攻击等。它提高了潜在攻击者的门槛。
The OWASP API Security Top 10 是由 OWASP(Open Web Application Security Project)编制的清单,该组织致力于提高软件安全性。该清单特别突出了与 API 相关的最关键安全风险,旨在提高开发人员、安全专业人员和组织对 API 相关漏洞和威胁的意识,并提供指导,以有效解决这些问题。
API 网关作为入站 API 请求的集中入口点。它们能够实施诸如身份验证、授权、加密和威胁防护等安全措施。这种集中化能够在所有 API 中应用一致的安全策略。
有效的错误处理机制使 API 能够优雅地处理意外情况或故障,确保错误得到适当地传达给客户端,提供更好的用户体验。确保返回给客户端的错误消息不会暴露 API 内部运作或基础架构的敏感信息。
无效或格式不正确的输入数据可能导致数据丢失、损坏或系统崩溃。输入验证在设计安全可靠的 API 中至关重要,有助于防止常见的攻击,如 SQL 注入、NoSQL 注入和其他基于注入的漏洞。