应用程序编程接口(API)是一组允许软件组件进行交互的协议。中间接口通常用于简化开发,使软件团队能够重复使用代码。API还通过将应用程序与它们所运行的基础设施脱钩来抽象系统之间的功能。尽管API在现代商业中的好处和用例不断增加,但固有的安全挑战带来了各种安全风险。

     本文深入探讨了与API漏洞相关的各种风险,同时学习了常见的API安全最佳实践,以实施强大的安全机制。

什么是API安全?
      一个API代表了一组服务,允许一个程序与另一个外部或内部程序进行通信。当我们谈论API安全时,我们通常指的是保护应用程序的后端服务,包括其数据库、用户管理系统或其他与数据存储交互的组件。API安全包括采用多种工具和做法来保护技术栈的完整性。一个强大的安全的API包括一个组织使用的API和使用这些API的服务。这包括防止恶意行为者访问敏感信息或代表你采取你不希望他们执行的行动。不幸的是,虽然API是现代应用程序的一个重要组成部分,但它们是攻击者访问敏感信息的一个常见目标。在使用API时,了解第三方应用程序如何通过接口输送数据是至关重要的。此外,随着API日益成为一个攻击载体,API安全措施有助于安全团队评估安全风险,并有一个全面的计划来保护它们。

image

API漏洞的风险
       由于API是公开访问的,它们是窃取敏感信息的常见目标,包括应用逻辑、用户凭证、信用卡号码等。此外,API端点的漏洞也会被恶意行为者利用,以获得对系统或网络的未授权访问,进行其他形式的攻击,如跨站脚本和代码注入。在线网络应用安全项目
(OWASP)发布了基于风险的十大漏洞建议,以确保网络API的安全。这些包括:

破损的用户认证--基本认证在API中提出了一个独特的挑战,因为多因素认证和基于凭证的登录通常被认为对API调用不切实际。由于API依靠嵌入到调用中的会话令牌来认证客户,认证不充分的API,如有问题的访问令牌实现,使黑客可以假设合法用户的身份。另一方面,长期存在的令牌也允许攻击者持续存在,无限期地破坏系统。
破损的对象级授权 - 在API中,对象级授权是一种代码级的控制机制,用于验证对象访问。对于存在对象级授权漏洞的API,外部用户可以用另一个用户的资源的ID替换他们自己的资源的ID。这允许攻击者访问指定用户的资源,导致对敏感数据的未授权访问。
缺乏资源和速率限制 -当API不限制特定客户的请求数量和频率时,他们可以每秒进行无数次调用。API客户端也可以一次请求访问多个资源和记录,使应用服务器超载,以即时服务于多个请求。这可能导致拒绝服务攻击,因为客户端一次发出过多的请求,会阻碍服务器处理请求的能力。缺乏速率限制也鼓励黑客对认证端点进行暴力攻击。
大规模赋值--大规模赋值漏洞发生在自动将用户输入管道到对象或程序变量的API中。虽然这个功能简化了代码开发,但一些用户可以初始化和超写服务器端的变量,从而破坏了应用程序。攻击者大多通过猜测并在制作请求时提供额外的对象属性来利用这一点。他们还可以阅读应用程序的文档或识别薄弱的API端点,使他们能够修改服务器端对象。
安全错误配置 - 多种安全错误配置对API构成威胁。这些包括。
冗长的错误信息--有些API会发送包含堆栈痕迹和系统信息的描述性错误信息,使用户了解应用程序在引擎盖下的工作情况。
错误配置的HTTP头暴露了安全漏洞,黑客可以利用这些漏洞来渗出数据并进行更深层次的复杂攻击。
不必要的HTTP方法和服务 - 如果管理员没有关闭不必要的服务,恶意攻击者可以使用不同的HTTP方法修改发布的资源。
不安全的默认配置 - API与第三方依赖关系连接,其中许多默认情况下是不安全的,需要加强安全态势来应对扩大的攻击面。

API安全--需要考虑的最佳实践
以下的网络API安全最佳实践可以帮助减轻API攻击:

使用节流和速率限制
      节流涉及到设置一个临时状态,允许API评估每个请求,并经常被用作反垃圾邮件措施或防止滥用或拒绝服务攻击。在实现节流功能时,有两个主要的考虑因素:每个用户应该允许多少数据,以及何时应该强制执行限制?另一方面,速率限制通过避免DoS和Brute force攻击来帮助管理REST API的安全性。在一些API中,开发者设置软限制,允许客户端在短暂的时间内超过请求限制。设置超时是最直接的API安全最佳实践之一,因为它可以处理同步和异步的请求。请求队列库能够创建接受最大数量请求的API,然后将其余的请求放在一个等待队列中。每种编程语言都有一个队列库目录来实现请求队列。

扫描API漏洞
      为了维护API服务的持续安全,启用自动扫描,识别漏洞,并在软件生命周期的各个阶段缓解这些漏洞是至关重要的。自动扫描工具通过将应用程序的配置与已知的漏洞数据库进行比较,自主地检测安全漏洞。

对REST APIs使用HTTPS/TLS
      HTTPS和传输层安全(TLS)提供了一个安全协议,在网络浏览器和服务器之间传输加密的数据。除了其他形式的信息外,HTTPS还有助于保护传输中的认证凭证。作为最关键的做法之一,每个API都应该实施HTTPS,以实现完整性、保密性和真实性。此外,安全团队应考虑使用相互认证的客户端证书,为敏感数据和服务提供额外保护。在构建安全的REST API时,开发人员应避免将HTTP重定向到HTTPS,这可能会破坏API客户端的安全性。还应采取适当的措施,转移跨源资源共享(CORS)和JSONP请求,因为它们在跨域调用方面存在根本性的漏洞。

限制HTTP方法
      REST APIs使Web应用程序能够执行各种可能的HTTP动词操作。通过HTTP的数据是不加密的,使用一些HTTP方法可能会被拦截并被攻击载体所利用。作为一个推荐的最佳实践,应该禁止本质上不安全的HTTP方法(GET、PUT、DELETE、POST等)。如果不可能完全禁止它们的使用,安全团队也可以应用政策,用严格的允许列表来审查这些方法的使用,所有不符合列表的请求都应该被拒绝。我们还建议利用RESTful API认证的最佳实践,以确保请求的客户端可以在行动、记录和资源集合上使用指定的HTTP方法。

实施充分的输入验证
      原则上,不应盲目相信API客户端提供的数据,因为认证服务器最终可能会执行来自未授权用户或应用服务的恶意脚本。为了避免这种情况,安全团队应该在客户端和服务器端都实施输入验证机制,以防止不健康的输入。客户端验证包括交互式的错误指示和对用户可接受的输入的建议,而服务器端验证则额外检查收到的数据以避免不同类型的XSS和SQL注入攻击。

使用API网关
      API网关将客户接口与后端API集合解耦,为API服务的一致可用性和可扩展性提供集中的资源。除了管理各种API服务,API管理平台还处理标准功能,包括遥测、速率限制和用户认证,以维护内部服务之间的安全。网关作为一个反向代理门卫,接受所有的API调用,协调服务所需的资源,并在认证后返回相应的结果。


今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
HTTP API接口安全设计
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

posted on 2022-03-19 12:50  PetterLiu  阅读(611)  评论(0编辑  收藏  举报