文章目录
- 一、API的前生今世
- (1)4中API表现形式
- (2)基于技术形式的类型划分的API
- 二、API安全的演进
- (1)什么是API安全
- (2)常见的API安全漏洞类型
一、API的前生今世
(1)4中API表现形式
在API的发展历程中,根据其表现形式的不同,大致分为如下4种类型。
【1】类库型API。类库型API通常是一个类库,它的使用依赖于特定的编程语言,开发者通过接口调用,访问API的内置行为,从而处理所需要的信息。例如,应用程序调用微软基础类库(MFC)
【2】操作系统型API。操作系统型API通常是操作系统层对外部提供的接口,开发者通过接口调用,完成对操作系统行为的操作。例如,应用程序调用Windows API或Linux标准库。
【3】远程应用型API。远程应用型API是开发者通过标准协议的方式,将不同的技术结合在一起,不用关心所涉及的编程语言或平台,来操纵远程资源。例如,Java通过JDBC连接操作不同类型的数据库。
【4】Web应用型API。Web应用型API通常使用HTTP协议,在企业与企业、企业内部不同的应用程序之间,通过Web开发过程中架构设计的方法,以一组服务的形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。例如,社交应用新浪微博的用户登录。
(2)基于技术形式的类型划分的API
每一个API都有着不同的技术实现,使用不同的开发语言,或使用不同的协议标准,基于这些技术形式和技术的普及程度,将现代API划分为RESTful API、GraphQL API、SOAP API、gRPC API、类XML-RPC及其他类型API。
■ RESTful API:此类API在技术形式上,以REST风格为主,是当前业界主流的API技术形式。
■ GraphQL API:此类API采用Facebook提出的GraphQL查询语言来构建API服务,尤其适用于树状、图状结构数据的使用场景。
■ SOAP API:即使用SOAP协议作为API接口交互方式的API应用,以Web Service为代表。
■ gRPC API:此类API采用Google的gRPC框架,通过Protobuf协议来定义接口和条件约束,完成客户端和服务器端的远程调用。
■ 类XML-RPC及其他类型API:此类API包含多种技术,因使用的普及率低故将其归类在一起,通常包含XML-RPC的API、JMS(Java Message Service)接口、WebSocket API以及IoT通信协议的接口等。
二、API安全的演进
(1)什么是API安全
API安全是从安全的角度关注API领域的安全问题和这些问题的解决方案,从技术和管理两个层面提高API自身和API周边生态的安全性。
本文谈论的API实际是以现代API为主,其关注的安全领域与传统的Web安全比较接近,但又不同于Web安全,属于IT领域中技术细分的交叉地带。传统Web安全更多的是关注Web应用程序的安全性,以服务器端应用程序安全为主,其漏洞表现形式主要为SQL注入、XSS、CSRF等。而API安全是在API技术被广泛使用后,攻击面不断扩大的情况下带来的安全管理问题和安全技术问题,它面临的外部环境比传统的Web安全更为复杂,通常内部包含API服务及其运行环境(与传统Web安全相似),外部包含API客户端应用程序、IoT设备、监管政策以及第三方合作厂商运作支持等,是API经济背景下各个方面安全能力的总集。
API安全在多个安全细分领域的交叉内容
(2)常见的API安全漏洞类型
■ 未受保护API:在现行的Open API开放平台中,一般需要对第三方厂商的API接入身份进行监管和审核,通过准入审核机制来保护API。当某个API因未受保护而被攻破后,会直接导致对内部应用程序或内部API的攻击。比如因REST、SOAP保护机制不全使攻击者透明地访问后端系统即属于此类。
■ 弱身份鉴别:当API暴露给公众调用时,为了保障用户的可信性,必须对调用用户进行身份认证。因设计缺陷导致对用户身份的鉴别和保护机制不全而被攻击,比如弱密码、硬编码、暴力破解等。
■ 中间人劫持:因API的通信链路安全机制不全,攻击者通过攻击手段将自己成为API链中的某个受信任链,从而拦截数据以进行数据篡改或加密卸载。此类攻击,通常发生在网络链路层。
■传统Web攻击:在这里主要是指传统Web攻击类型,通过攻击HTTP协议中不同的参数,来达到攻击目的,比如SQL注入、LDAP注入、XXE等。而攻击者在进一步攻击中,会利用权限控制缺失、CSRF进行横向移动,从而获取更大的战果。
■ 弱会话控制:有时API身份鉴别没有问题,但对会话过程安全保护不足,比如会话令牌(Cookie、一次性URL、SAML令牌和OAuth令牌)的保护。会话令牌是使API服务器知道谁在调用它的主要(通常是唯一的)方法,如果令牌遭到破坏、重放或被欺骗,API服务器很难区分是否是恶意攻击行为。
■ 反向控制:与传统的交互技术不同,API通常连接着两端。传统的应用中大多数安全协议都认为信任服务器端是可信的,而在API中,服务器端和客户端都不可信。如果服务器端被控制,则反向导致调用API的客户端出现安全问题,这是此类安全问题出现的原因。
■ 框架攻击:在API安全威胁中,有一些特殊存在的攻击场景,它们是API规范、架构设计导致的安全问题,这类威胁统称为框架攻击。最常见的比如同一API存在不同版本,导致攻击者攻击低版本API漏洞;同一API的不同客户端调用,可能PC端没有安全问题而移动端存在安全问题等。