- 一、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开发过程中架构设计的方法,以一组服务的形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。例如,RESTful API,
-
二、现代API做不同类型的划分。
1.基于服务对象的类型划分
每一个API所提供的服务能力,最终都是被企业内外部调用才能实现API的价值。根据API所承载业务功能的服务范围不同,现代API可以划分为公有型API、私有型API和混合型API。
■ 公有型API:此类API主要面向企业外部客户或企业第三方合作伙伴,向外部提供企业的API服务能力,以业务承载为主。
■ 私有型API:此类API主要面向企业内部,不面向外部提供服务能力,具有一定的私密性,以运营管理、内部服务支撑为主。
■ 混合型API:此类API的服务对象没有明显的限制,兼有企业外部客户和企业内部应用之间的调用。
对现代API按照服务对象进行不同类型的划分,有利于明确服务对象和使用范围,为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类型划分带有鲜明的技术特点,它有助于使用者了解其技术构成和该技术的交互细节,了解该技术形式所带来的特有的安全特性和安全风险,做出准确的判断和合理的处置。 -
四、基于使用者的类型划分
不同的API提供不同的业务功能供不同的用户使用,这些使用者可能是具体的自然人用户,也可能是前端应用程序,还有可能是终端设备,基于API使用者的不同,现代API可以划分为用户参与型API、程序调用型API和IoT设备型API。
■ 用户参与型API:此类API在业务交互过程中,需要自然人用户参与,比如用户单击操作、与用户身份相关的会话保持、与用户身份相关的访问控制等。大多数互联网应用中使用的API为此种类型。
■ 程序调用型API:API调用中,存在某些场景下无自然人用户参与的情况,仅仅是后端服务或前端应用程序之间的通信处理。这些场景下的API属于此类型的API。
■ IoT设备型API:除了上述两类API之外,还有一些API仅仅提供给IoT设备调用,在交互流程上比上述两类要简单,或设备内无法完成流程,需要离线操作。
基于API的使用者对现代API做类型划分,有助于API设计者和研发人员梳理交互流程,识别不同场景下适用的安全机制,制定不同的安全控制策略来提高API服务的安全性。 -
五、Web Service服务通信3部分组成:SOAP(简单对象访问协议)、UDDI(Web Services提供信息注册中心的实现标准规范)、WSDL(描述Web Services以及如何对它们进行访问)
-
六、十大API安全漏洞类型的含义分别如下。
■ API1-失效的对象级授权:攻击者通过破坏对象级别授权的API,来获得未经授权的或敏感的数据,比如通过可预测订单ID值来查询所有订单信息。
■ API2-失效的用户认证:开发者对API身份认证机制设计存在缺陷或无保护设计,导致身份认证机制无效,比如弱密码、无锁定机制而被暴露破解、Token未校验或Token泄露导致认证机制失效等。
■ API3-过度的数据暴露:在API响应报文中,未对应答数据做适当的过滤,返回过多的、不必要的敏感信息。比如查询用户信息接口时却返回了身份证号、密码信息;查询订单信息时也返回了付款银行卡号、付款人地址信息等。
■ API4-缺乏资源和速率控制:在API设计中,未对API做资源和速率限制或保护不足,导致被攻击。比如用户信息接口未做频次限制导致所有用户数据被盗;文本翻译接口没有速率限制导致大量文件上传耗尽翻译服务器资源。
■ API5-失效的功能级授权:与API1类似,只不过此处主要指功能级的控制,比如修改HTTP方法,从GET改成DELETE便能访问一些非授权的API;普通用户可以访问api/userinfo的调用,直接修改为api/admininfo,即可调用管理类API。
■ API6-批量分配:在API的业务对象或数据结构中,通常存在多个属性,攻击者通过篡改属性值的方式,达到攻击目的。比如通过设置user.is_admin和user.is_manager的值提升用户权限等级;假设某API的默认接口调用参数为{“user_name”:“user”,“is_admin”:0},而恶意攻击者修改请求参数,提交值为{“user_name”:“attacker”,“is_admin”:1},通过修改参数is_admin的值来提升为管理员权限。
■ API7-安全性配置错误:系统配置错误导致API的不安全,比如传输层没有使用TLS导致中间人劫持;异常堆栈信息未处理直接抛给调用端导致敏感信息泄露。
■ API8-注入:与OWASP Web安全注入类型相似,主要指SQL注入、NoSQL注入、命令行注入、XML注入等。
■ API9-资产管理不当:对于API资产的管理不清,比如测试环境的、已过期的、低版本的、未升级补丁的、影子API等接口暴露,从管理上没有梳理清楚,导致被黑客攻击。
■ API10-日志记录和监控不足:对API缺失有效的监控和日志审计手段,导致被黑客攻击时缺少告警、提醒,未能及时阻断。比如没有统一的API网关、没有SEIM平台、没有接入Web应用防火墙等。 -
七、API安全设计的53A原则和纵深防御原则:
1 5A原则
5A原则是由5个首字母为A的单词构成的,分别是Authentication(身份认证)、Authorization(授权)、Access Control(访问控制)、Auditable(可审计性)、Asset Protection(资产保护),其含义是当安全设计人员在做安全设计时,需要从这5个方面考量安全设计的合理性
2、纵深防御
通常是指不能只依赖单一安全机制,建立多种安全机制,互相支撑以达到相对安全的目的。在API安全设计中,可以在不同层面使用不同的安全技术,来达到纵深防御的目的。比如根据API业务属性的不同,划分为公共型API、私有型API,再根据粒度粗细、业务需求、服务数量、权限划分,采用不同的身份认证和授权技术实现
5A原则重点强调每一层安全架构设计的合理性,是横向的安全防护,强调的是宽度;纵深防御是对同一问题从不同的层次、不同的角度做安全防护,是纵向的安全防护,强调的是深度。这两个原则相结合,共同将安全设计构成一个有机的防护整体。
-
八、API安全技术栈
API安全技术进行了总结,最上面的WAF、API网关是API安全的基础套件,为API安全提供综合的安全支撑能力;认证与授权以OpenID Connect套件、OAuth 2.0套件为代表,提供API的身份认证和鉴权解决方案;而审计套件、JSON套件、XML套件为API的消息保护和安全审计提供技术支持。
-
九、API安全中南北向流量与东西向流量
在IT信息系统中,通常把数据中心IDC内部与外部的通信流量称为南北向流量,把IDC内部相互通信的流量称为东西向流量。在API技术架构中,根据API所承载业务功能服务范围的不同,将API划分为公有API、私有API和混合型API,但在实际的网络环境中,不同类型的API服务部署在网络中的位置可能未严格地按照安全区域划分后的部署。所以,参考IDC通信流量的划分方式,将系统外部与内部交互的API流量称为南北向流量,将系统内部交互的API流量称为东西向流量