《API安全技术与实战》 读书笔记 API的前生今世和API安全的演进

news2024/9/23 23:22:48

文章目录

  • 一、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端没有安全问题而移动端存在安全问题等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos系列——Nacos概述(2.x版本)1-1

Nacos系列——Nacos概述(2.x版本)1-1前言Nacos概述(2.x版本)文档地址关键特性服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理Nacos地图核心概念地域可用区接入点命名空间配置配置管理配置项配置集配置集 ID配…

[阶段4 企业开发进阶] 7. 微服务

文章目录1 微服务1.1 微服务概念1.2 SpringCloud1.3 工程搭建1.4 支付模块构建cloud-provider-payment-80011 微服务 1.1 微服务概念 概念 Microservice architectures are the ‘new normal’. Building small, self-contained, ready to run applications can bring great f…

毕业设计 Stm32家庭气象仪 天气监控系统 - 物联网 单片机 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 DHT11温湿度传感器4.2 MQ135空气质量传感器4.35 部分核心代码6 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩…

安全分析模型自动化调优

安全分析模型自动化调优 MLOps(Machine Learning Operations)是一种人工智能 的工程实践,是面向机器学习项目的研发运营管理体系 。旨在实现 ML 管道的操作、ML 模型的部署和管理标准化,支持ML 模型的发布、激活、监控、性能跟踪…

Stm32旧版库函数18——读传感器

/******************************************************************************* // // 使用单片机STM32F100C8T6 // 晶振:8.00M // 编译环境 Keil uVision4 // 在3.3V的供电环境下,就能运行 // 波特率 19200 ************************************…

SpringBoot请求参数传递与接收

一、GET请求和POST请求的区别是什么 GET和POST请求的区别主要有下面几点 GET没有请求体,POST有请求体GET传输比POST快GET只能携带少量数据(因为其请求url有长度限制),POST可以携带的数据量较大POST因为将数据放在请求体中&#…

使用IDEA工具通过Java API 访问HDFS

文章目录一,了解 HDFS Java API(一)HDFS常见类与接口(二)FileSystem的常用方法二,编写Java程序访问HDFS01 创建Maven项目02 添加相关依赖03 创建日志属性文件(1)在resources目录里创…

变电站火灾检测项目(tf2)

目录 1. 项目背景 2. 项目研究数据集介绍(变电站火灾检测图像数据集) 3. 目标检测模型介绍(SE改进的YOLOv4-tiny模型) 4. 模型训练及测试 1. 项目背景 我们的日常生活与电力息息相关,变电站作为输配电系统的关键环…

【设计模式】责任链模式

【设计模式】责任链模式 文章目录【设计模式】责任链模式一:责任链模式概述二:责任链模式结构三:责任链模式案例实现四:优缺点五:责任链模式实战一:责任链模式概述 在现实生活中,常常会出现这样…

Jmeter(二十一):jmeter导入和导出接口的处理

JMeter测试导入接口 利用Jmeter测试上传文件,首先可根据接口文档或者fiddler抓包分析文件上传的接口;如下图: 以下是我通过fiddler所截取的文件上传的接口 1、填写导入接口的信息 查看文件上传栏下的填写信息: 文件名称&#xf…

【图像分割】多种阈值图像分割(带面板)【含GUI Matlab源码 733期】

⛄一、图像分割简介 理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】 ⛄二、部分源代码 function varargout yuzhifenge(varargin) % YUZHIFENGE MATLAB code for yuzhifenge.fig % YUZHIFENGE, by itself, creates a new YUZHIFEN…

【Redis】缓存问题

用户数据一般都是存储在数据库中,数据库则落在磁盘上。而磁盘的I/O速度是计算机中最慢的硬件。 当用户的访问量在某一个时间段突然上升,数据库就很容易崩溃。为了避免用户直接访问数据库,所以会使用缓存数据库(Redis)作为缓冲层。 Redis 是内…

DIY NAS服务器之OMV 5.6入坑指南(二)- 安装omv-extras插件

DIY NAS服务器之OMV 5.6入坑指南(一)-openmediavalut 5.6安装 前面我们已经安装好了OMV5.6了。 接下来就是建设我们的OMV系统了。 首先第一步,我们开启社区插件omv-extras: 通过如下url把插件安装文件 下载到电脑本地&#xff0c…

Mysql分布式锁(二)直接用一条sql语句来实现原子性

文章目录一、直接用更新的sql实现1. 场景描述2. 修改sqlStockMapperStockService3. 重新测试二、问题1. 锁范围问题:行级锁 表级锁2. 若逻辑太复杂,一个sql无法实现4. 无法监控库存变化前后的状态一、直接用更新的sql实现 1. 场景描述 之前的deduct()方…

DevOps实战系列【第十三章】:流水线应用工具Blue Ocean使用

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 BlueOcean图形化工具 可以通过插件的方式安装到jenkins,搜索“Blue Ocean”,安装后重启即可。 由于兼容问题,BlueOcean依赖的插件有些是失败的,我…

实际生产中使用Oracle的小问题及解决方法记录:ORA-00911,ORA-12514,ORA-28547

背景 在上次安装并初步测试 Oracle 后Oracle 11g安装使用、备份恢复并与SpringBoot集成,在实际生产中使用 Oracle 时又遇到几个小问题: ORA-00911 , ORA-12514 , ORA-28547 。下面分别列出这几个问题的解决方法。 Note&#xff…

DCBC路由模式配置端口映射

DCBC路由模式配置端口映射 拓扑搭建 前提:使用DCBC、CS6200、两台PC机:一台用户配置IP另一台用于测试端口映射,外网环境使用192.168.19.0/24网段 网段划分 全网互通 1.DCBC对应工作模式配置 对应接口配置 配置静态路由两条,一条…

ArcGIS And ENVI:如何进行植被指数的提取并制作成专题地图?

目录 01 目的 02 操作步骤 2.1 在ENVI加载tm_860516.img文件 2.2 进行NDVI指数的计算 2.3 使用ArcGIS对NDVI植被指数提取图进行专题制作 2.3.1 加载NDVI植被指数提取图 2.3.2 对NDVI植被指数提取图进行重分类 2.3.3 布局视图下的NDVI植被指数的相关编辑 03 实验结果 01 目的 对…

Iterated function

In mathematics, an iterated function is a function X → X (that is, a function from some set X to itself) which is obtained by composing another function f : X → X with itself a certain number of times. The process of repeatedly applying the same function…

【数据结构与算法 - 数据结构基础】什么是数据结构?

【数据结构与算法 - 数据结构基础】什么是数据结构? 文章目录【数据结构与算法 - 数据结构基础】什么是数据结构?1 数据结构包含的三个方面1.1 数据的逻辑结构1.1.1 线性结构数组【Array】链表【LinkedList】栈【Stack】队列【Queue】1.1.2 树结构【Tree…