API安全性最佳实践_api 安全实践

始终遵循POLP。如果用户只是需要阅读博客或发表评论,那么这些是应该分配的唯一权限。

  1. 实现访问控制

希望第三方通过api访问内部数据和系统的组织必须引入和测试控制来管理这种访问:何人、内容和时间,以及对数据访问、创建、更新和删除的检查——零信任安全模型。

将API置于防火墙、web应用防火墙或API网关之后——通过安全协议(如HTTPS)访问——以提供基线保护,例如扫描基于签名的威胁和基于注入的攻击。

设计良好的api还可以应用速率限制和地理速度检查,以及作为地理围栏和I/O内容验证和消毒等策略的执行点。Geo-velocity检查根据先前和当前登录尝试之间所需的移动速度确定访问,从而提供基于上下文的身份验证。

所有这些检查都由作为API应用程序一部分的中间件代码应用。中间件在传递请求之前处理请求。

3.加密请求和响应

所有网络流量都应该加密——尤其是API请求和响应,因为它们可能包含敏感凭证和数据。所有api都应该使用并要求HTTPS。在可能的情况下启用HTTP严格传输安全比将HTTP流量重定向到HTTPS更好,因为API客户端可能不会像预期的那样表现。

  1. 验证数据

永远不要假设API数据已经被正确地清理或验证。在服务器端实现自己的数据清理和验证例程,以防止标准注入缺陷和跨站请求伪造攻击。诸如Postman和Chrome DevTools之类的调试工具可以帮助检查API的数据流并跟踪错误和异常。

  1. 评估API风险

另一个重要的API安全性最佳实践是对现有注册表中的所有API执行风险评估。建立措施,以确保它们符合安全策略,并且不容易受到已知风险的影响。开放Web应用程序安全项目的“API安全十大”漏洞列表是跟踪现有攻击和恶意软件的一个很好的资源。

风险评估应确定所有系统和数据受到影响,如果一个API应该受到损害,然后概述一个治疗计划和必要的控制,以减少任何风险到可接受的水平。

文档审查日期并在出现新威胁或API被修改时重复评估。在任何后续代码更改之前,都应该检查此文档,以确保安全性和数据处理需求不会受到损害。

  1. 只分享必要的信息

API响应通常包括整个数据记录,而不仅仅是相关字段,依赖客户端应用程序过滤用户看到的内容。这就是惰性编程,它不仅减慢了响应时间,而且还为攻击者提供了关于API及其访问的资源的额外信息。

响应应该包含满足请求所需的最少信息。例如,如果要求员工的年龄,那么出生日期也不应该返回。

  1. 选择自己的Web服务API

通过api访问web服务有两个主要选项:简单对象访问协议(SOAP),一种通信协议;以及具象状态传输API (REST API或RESTful API),一套用于数据传输的体系结构原则。它们使用不同的格式和语义,需要不同的策略来确保健壮的安全性。

SOAP安全性使用XML消息本身中的数字签名和加密部分应用于消息级别。REST严重依赖于与API的通用资源标识符(如HTTP标记和URL路径)相关的访问控制规则。

如果您主要关心的是标准化和安全性,请使用SOAP。虽然这两个选项都支持安全套接字层/传输层安全(SSL/TLS),但SOAP还支持Web服务安全、通过中介进行身份验证(而不仅仅是SSL/TLS提供的点对点验证)以及内置的错误处理。但是,SOAP将应用程序逻辑的组件公开为服务而不是数据,这可能会使SOAP的实现变得复杂,并且可能需要对应用程序进行重构。

与此同时,REST与各种数据输出类型兼容——包括JSON、逗号分隔值和HTTP——而SOAP只能处理XML和HTTP。此外,REST仅访问数据,因此它是访问web服务的一种更简单的方式。由于这些原因,组织通常更喜欢使用REST进行web开发项目。但是,数据交换、部署和与客户端的交互必须内置安全性。

  1. 在API注册表中记录API

没人能保护自己不知道的东西。因此,必须在注册表中记录所有api,以定义其名称、用途、有效负载、使用情况、访问、运行日期、退役日期和所有者等特征。这将避免影子或竖井api被遗忘,从未记录或在主项目之外开发,可能是通过合并、收购或测试或弃用版本。

记录要记录的信息的详细信息——例如何人、内容和时间——这将有助于满足合规性和审计要求,并在发生安全事件时帮助取证分析。

对于希望将这些api合并到自己的项目中的第三方开发人员来说,良好的文档尤为重要。API注册表应该包含到文档或手册的链接,这些文档或手册包含所有技术API需求,包括函数、类、返回类型、参数和集成过程。

  1. 定期进行安全测试

除了在开发过程中彻底测试api之外,安全团队还需要定期检查保护活动api的安全控制,以确保它们按预期运行,并按照文档的要求运行。

事件响应团队应该创建一个计划来处理威胁检测和其他安全控制所产生的指示API攻击的警报。

  1. 隐藏你的API密钥

API密钥用于识别和验证对调用API的应用程序或站点的访问。它们还可以阻止或限制对API的调用,并识别使用模式。

API密钥不如身份验证令牌安全,需要仔细管理。避免将API键直接嵌入到它们的代码中或应用程序源代码树中的文件中,在这些地方它们可能会意外地暴露出来。相反,应该将它们存储在环境变量中或应用程序源树之外的文件中。更好的方法是使用秘密管理服务,它可以保护和管理应用程序的API密钥。

即使采取了这些措施,也要始终删除不需要的密钥,以最大限度地减少受到攻击的风险,并定期重新生成密钥——特别是在您怀疑已发生漏洞时。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值