Part 01、什么是API
关于API的定义,先来看看维基百科上对API的描述。
“An application programming interface(API)is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.”
从这段描述中可以了解到,API是一个在应用程序开发过程中会被经常提及的东西,它的全称是Application Programming Interface(应用程序接口)。API通过定义一组函数、协议、数据结构,明确应用程序中各个组件之间通信与数据交互方式。将Web应用、操作系统、数据库以及计算机软硬件的能力以接口的形式提供给外部使用,而无需访问源码,或理解内部工作机制的细节。
Part 02、常见API类型
在API的发展历程中,根据其表现形式的不同,大致分为如下四种类型:
➤ 类库型API
- 定义
类库型API通常是一个类库,它的使用依赖于特定的编程语言,开发者通过接口调用,访问API的内置行为,从而处理所需要的信息。
- 举例
应用程序调用微软基础类库(MFC)
➤ 操作系统型API
-定义
操作系统型API通常是操作系统层对外部提供的接口,开发者通过接口调用,完成对操作系统行为的操作。
- 举例
应用程序调用Windows API或Linux标准库
➤ 远程应用型API
- 定义
远程应用型API是开发者通过标准协议的方式,将不同的技术结合在一起,不用关心所涉及的编程语言或平台,来操纵远程资源。
- 举例
Java通过JDBC连接操作不同类型的数据库
➤ Web应用型API
- 定义:
Web应用型API通常使用HTTP协议,在企业与企业、企业内部不同 的应用程序之间,通过Web开发过程中架构设计的方法,以一组服务的 形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。
- 举例:
社交应用新浪微博的用户登录
在API技术的发展历史中,业界习惯把前两个阶段的API称为古典 API,后两个阶段的API称为现代API。现代API是当前API技术的主要使用形式,以Web应用型API为主。基于现代API的服务对象不同、技术形式不同、使用者不同,可以对现代API做不同类型的划分。
Part 03、API安全问题主要成因
近年来,越来越多的攻击者开始将目标对准API,因为API被攻击或者存在漏洞而出现的攻击事件或数据泄露事件频频发生,例如:
- 2019年11月,Twitter出现过利用通讯录匹配功能获得百万推特用户账号和手机号的数据泄露事件。
- 2020年3月,Facebook数据大规模泄露,包括用户昵称、邮箱、电话、家庭住宅等信息,涉及5亿多用户,
- 2020年4月,GitLab API问题导致私有项目的名称空间泄露。
那么,导致API安全问题频繁发生的原因是什么呢?
🔍 企业API安全意识不足
人们通常假设程序会按照想象中的过程运行,从而导致API被攻击的可能性以及影响被严重低估,因此不去采取充分的防护措施。此外,第三方合作伙伴系统的API,也容易被组织所忽视。
🔍 技术革新导致API安全风险增加
随着云计算技术的广泛应用,越来越多的企业将应用和数据迁移至云端,并暴露核心业务能力和流程相关的API为外部合作伙伴提供服务,无形中使得API安全风险增大。且很多技术开发人员热衷于采纳新的、酷的技术,在技术路线上选择新的特性,忽视API是否被攻击,导致API安全风险更不可控。
🔍 API自身安全机制不足
API为企业提供便利的对外开放能力的同时,也为攻击者提供了攻击的通道。API自身的安全机制存在缺陷,比如缺少授权访问控制或异常检测手段、缺少对API资产的生命周期管理,这些在攻防对抗中容易成为突破口。
Part 04、OWASP API Top 10
随着针对API的攻击日益严重,OWASP组织推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结,以警示业界提高对API安全问题的关注。
Part 05、企业API安全建设
针对企业API安全建设,综合了网上部分安全建议,以供大家参考:
- API资产管理
主动发现并构建API资产列表,清理僵尸/影子API。统计各个API的详情,包括API的请求方法、参数特征、业务用途、发现时间、活跃时间等,多维度绘制API资产画像,实现对API资产的统一管理。
- API攻击防护
综合利用智能规则匹配及智能攻击检测引擎,持续监控并分析流量行为,对安全攻击进行实时防护。智能攻击检测引擎在用户与应用程序交互的过程中收集数据,并利用统计模型来确定API请求/响应的异常。
- 敏感数据管控
识别API访问中的敏感数据并分类分级管理,对传输中的敏感数据可以进行模糊化或者实时拦截,防止敏感数据泄露。
- 访问行为管控
对API接口的访问行为进行监控分析,通过多维度建立API访问基线,及时发现批量注册、撞库、资源滥用等各类异常访问行为,避免恶意访问和接口滥用造成的业务损失。
Part 06、总结
如今API安全已经成为提供API服务的企业之间以及企业内部都需要关注的一个安全问题,一旦没有很好的保护好提供服务的API,不仅会对用户的使用体验以及个人隐私带来威胁和风险,而且可能会使企业面临安全威胁和风险。随着信息技术的快速发展,API安全防护也在持续演进过程中,企业要重点关注API安全的整个生命周期,加强系统化、自动化安全防护措施,向智能防护智能的方向演进。
✴参考文献
[1] API安全技术与实践 钱君生 杨明 韦巍
[2] https://mp.weixin.qq.com/s/pZM1qUgct-Xi3Cagi8WzvA
[3] https://mp.weixin.qq.com/s/vJ4xJwOuSI9RXVD4TI6XZQ