网络安全-API接口安全
本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷)
本文为追加文章,后期慢慢追加
API接口概念
API接口(Application Programming Interface,应用程序编程接口)是一组定义、规范了软件系统中不同组件之间交互的方法和约定。
API接口定义了组件之间通信的协议,包括数据格式、请求和响应的规范、认证和授权的方式等。通过使用API接口,软件系统的不同组件可以相互调用和交互,实现数据传输、功能调用和服务调用等操作。
API接口可以是各种形式的,包括Web API、数据库API、操作系统API等。Web API是一种基于HTTP协议的接口,用于通过网络连接访问服务器上的服务和数据。数据库API是一种用于访问和操作数据库的接口,可以执行查询和修改数据等操作。操作系统API是一种用于访问和控制操作系统功能的接口,可以执行文件操作、进程管理、网络通信等操作。
API接口的优点
- 灵活性:API接口可以与不同的系统和平台进行交互,使得不同系统之间可以实现数据的传递和共享,提高了系统的灵活性。
- 可扩展性:API接口允许系统进行扩展和升级,通过添加新的功能和服务,而不影响已有的系统结构和功能。
- 安全性:API接口可以通过身份验证、访问控制等机制确保系统和数据的安全性,提供高度可信的数据传输和处理。
- 便利性:API接口可以通过简单的调用方式进行调用,无需了解底层实现细节,提供了更便捷的操作方式和更好的用户体验。
- 可重用性:API接口可以被不同的应用程序或系统重复使用,提高了代码的复用程度,减少了重复开发和维护的工作量。
- 效率:API接口可以实现系统和服务的解耦,使得系统可以并行处理多个请求,提高了系统的并发处理能力和响应速度。
- 易于集成:API接口可以与其他的系统和平台进行集成,实现不同系统之间的数据共享和业务流程的协同工作。
- 创新性:API接口可以为开发者提供丰富的数据和功能接口,激发创新的想法,促进新的应用和服务的出现。
使用API接口存在以下风险:
-
安全风险:API接口可能受到黑客攻击、数据泄露或篡改的风险。攻击者可以利用API暴露的漏洞来实施各种攻击,例如SQL注入、跨站脚本攻击等。
-
业务风险:API接口可能导致业务上的问题,例如数据不一致、数据冗余或数据丢失等。如果API接口设计不合理或实现有缺陷,可能会造成数据的错误或丢失,从而影响业务的正常运行。
-
性能风险:API接口的性能可能不稳定或不足以支撑大量用户的访问。如果API接口无法及时响应用户的请求,可能会导致用户体验的下降或系统的崩溃。
-
兼容性风险:API接口的升级或变更可能导致与已有系统或应用程序的不兼容。如果API接口的变更没有充分考虑到已有系统的依赖,可能导致系统之间的通信出现问题,从而影响整个系统的运行。
-
法律合规风险:API接口可能涉及用户隐私或敏感数据的传输或处理,因此需要遵守相关的法律和法规。如果API接口的设计或实现不符合法律的要求,可能会面临法律风险和法律诉讼。
为了降低API接口的风险,可以采取以下措施:
-
安全措施:在设计和实现API接口时,要考虑安全性,并采用必要的安全措施,例如身份验证、访问控制和数据加密等。
-
测试和监控:对API接口进行充分的测试,包括功能测试、安全测试和性能测试等,并建立监控机制,及时监测和处理异常情况。
-
文档和版本管理:编写清晰的API文档,并及时更新,以便开发人员和用户能够正确使用API接口。同时,使用版本管理工具来管理API接口的变更,以保证兼容性。
-
合规性检查:确保API接口的设计和实现符合相关的法律和法规,例如数据隐私保护法规和网络安全法规等。
-
客户支持:提供良好的客户支持,及时回答用户的问题和解决用户的困扰,以提高用户的满意度和信任度。
API防护手段
代码层面
大佬文章:
吴名氏. API接口安全加密,防止接口被黑客攻击 https://blog.csdn.net/qq_37284798/article/details/128397671
2301_78540048 浅谈API接口安全 https://blog.csdn.net/2301_78540048/article/details/131356229
蓝狼爱猫 API接口之安全篇 https://www.cnblogs.com/xingxia/p/API_secrute.html
1. 数据加密,防止报文明文传输
明文数据在网络传输过程中,很容易被抓包。如果使用的是http协议,因为它是明文传输的,用户的数据就很容易被别人获取。一般在网络传输的过程中我们要使用HTTPS协议进行安全加密。
2. 数据加签验签
数据报文加签验签,是保证数据传输安全的常用手段,它可以保证数据在传输过程中不被篡改。
3. token授权认证机制

4. 时间戳timestamp超时机制
客户端每次请求接口都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间(比如:1分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。
5. timestamp+nonce方案防止重放攻击
在timestamp方案的基础上,加上nonce参数,因为timstamp参数对于超过60s的请求,都认为非法请求,所以我们只需要存储60s的nonce参数的“集合”即可。
6.限流机制
使用Redis分布式限流,还可以使用阿里开源组件sentinel限流。
7. 黑名单机制
可以搞个黑名单机制,把该用户拉黑
8. 白名单机制
相关文章:
网络安全-API接口安全
本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 API接口概念 API接口(Application Programming Interface,应用程序编程接口&…...
flutter学习-day16-自定义组件
📚 目录 介绍组合多个组件自绘组件 Custompaint绘制边界RepaintBoundaryCustomPainter与Canvas画笔Paint绘制组件例子 本文学习和引用自《Flutter实战第二版》:作者:杜文 1. 介绍 当Flutter提供的现有组件无法满足我们的需求,或…...
XML简介 (EXtensible Markup Language)
XML简介 (EXtensible Markup Language) 可扩展标记语言 特点 XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换 作用 数据交互配置应用程序和网站Ajax基石 XML标签 XML文档内容由一系列标签元素组成 <元素名 属性名"属性值">元素内容&l…...
基于Spring自动注入快速实现策略模式+工厂模式优化过多的if..else
一、策略模式 1.1策略模式定义 在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相…...
安装vcpkg管理opencv的安装+MFC缺失的解决
第一步,出现#include没有办法找到opencv头文件的问题,无法解决 在VC的提示下,安装了vcpkg,然后用vcpkg命令来帮助安装opencv,过程十分顺利。 1. cmd 到命令行窗口; 2. 建立src文件夹,并进入…...
了解树和学习二叉树
1.树 1.1 概念 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。 注意:树形结构中…...
Spring Boot学习随笔- 拦截器实现和配置(HandlerInterceptor、addInterceptors)、jar包部署和war包部署
学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十三章、拦截器 拦截器 :Interceptor 拦截 中断 类似于javaweb中的Filter,不过没有Filter那么强大 作用 Spring MVC的拦截器是一种用于在请求处理过程中进行预处理和后处理的机制。拦…...
Pipelined-ADC设计二——结构指标及非理想因素(Part2)
接上文,本章将两个比较重要的非理想因素,因此各项指标制定。后续会对常见的非理想因素给出常见的解决方法,以及设计所采用的方法。 2.2.7. 比较器失调 在流水线 ADC 中,比较器的主要误差来源就是比较器失调,称为失调误…...
Ubuntu 常用命令之 clear 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 clear命令在Ubuntu系统下用于清除终端屏幕的内容。这个命令没有任何参数,它的主要作用就是清理终端屏幕上的所有信息,使得屏幕看起来像是新打开的一样。 使用clear命令非常简单,只需要在终端中…...
【JAVA面试题】什么是对象锁?什么是类锁?
🍎 个人博客 :个 人 主 页 🏆个人专栏:多线程JAVA ⛳️ 功 不 唐 捐 ,玉 汝 于 成 目录 前言 回答 对象锁(Object Lock): 类锁(Class Lock)࿱…...
飞天使-k8s知识点5-kubernetes基础名词扫盲
文章目录 deploymentspodNodeserviceskubectl 实现应用伸缩kubectl 实现滚动更新kubernetes架构 deployments 中文文档 http://docs.kubernetes.org.cn/251.htmldeployment是用来创建和更新应用的,master 会负责将创建好的应用实例调度到集群中的各个节点 应用实例…...
【视觉实践】使用Mediapipe进行目标检测:杯子检测和椅子检测实践
目录 1 Mediapipe 2 Solutions 3 安装mediapipe 4 实践 1 Mediapipe Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning,ML)方案。MediaPipe是一个用于构建机器学习管道</...
C++之深拷贝进阶
目录 拷贝构造函数的深拷贝进阶版本 赋值运算符重载的深拷贝进阶 总结 上期我们学习了C中深拷贝的传统版本,今天我们将学习更为高效的版本。 拷贝构造函数的深拷贝进阶版本 传统版本代码如下: string(string& s):_str(new char[strlen(s._str)…...
导行电磁波从纵向场分量求其他方向分量的矩阵表示
导行电磁波从纵向场分量求解其他方向分量的矩阵表示 导行电磁波传播的特点 电磁波在均匀、线性、各向同性的空间中沿着 z z z轴传播,可用分离变量法将时间轴、 z z z轴与 x , y x,y x,y轴分离,电磁波的形式可表示为: E ⃗ E ⃗ ( x , y )…...
融资项目——swagger2的注解
1. ApiModel与ApiModelProperty(在实体类中使用) 如上图,ApiModel加在实体类上方,用于整体描述实体类。ApiModelProperty(value"xxx",example"xxx")放于每个属性上方,用于对属性进行描述。swagger2网页上的效果如下图&am…...
【性能优化】MySql数据库查询优化方案
阅读本文你的收获 了解系统运行效率提升的整体解决思路和方向学会MySQl中进行数据库查询优化的步骤学会看慢查询、执行计划、进行性能分析、调优 一、问题:如果你的系统运行很慢,你有什么解决方案? 关于这个问题,我们通常首先…...
Chrome浏览器http自动跳https问题
现象: Chrome浏览器访问http页面时有时会自动跳转https,导致一些问题。比如: 开发阶段访问dev环境网址跳https,后端还是http,导致接口跨域。 复现: 先访问http网址,再改成https访问…...
【C++进阶02】多态
一、多态的概念及定义 1.1 多态的概念 多态简单来说就是多种形态 同一个行为,不同对象去完成时 会产生出不同的状态 多态分为静态多态和动态多态 静态多态指的是编译时 在程序编译期间确定了程序的行为 比如:函数重载 动态多态指的是运行时 在程序运行…...
PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目…...
【Seata源码学习 】 扫描@GlobalTransaction注解 篇一
1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制,在应用上下文启动时,会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
