网络安全-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…...
DBA-MySql面试问题及答案-上
文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎?6.可以针对表设置引擎吗?如何设置?6.选择合适的存储引擎?7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…...
网络爬虫之Ajax动态数据采集
动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…...
c语言的初始学习(练习)
##初学c语言---MOOC浙江大学翁恺先生学习c语言 那么我们先看看这个题目吧,这是初始语法的应用。 记住,我们的程序是按步骤执行的,并不是在不同的两行同时进行。 程序设计:1.了解题目的需要,几个变量需要用到&#x…...
研究论文 2022-Oncoimmunology:AI+癌RNA-seq数据 识别细胞景观
Wang, Xin, et al. "Deep learning using bulk RNA-seq data expands cell landscape identification in tumor microenvironment." Oncoimmunology 11.1 (2022): 2043662. https://www.tandfonline.com/doi/full/10.1080/2162402X.2022.2043662 被引次数࿱…...
ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
在地学领域,ArcGIS几乎成为了每位科研工作者作图、数据分析的必备工具,而ArcGIS Pro3除了良好地继承了ArcMap强大的数据管理、制图、空间分析等能力,还具有二三维融合、大数据、矢量切片制作及发布、任务工作流、时空立方体等特色功能&#x…...
okhttp系列-一些上限值
1.正在执行的任务数量最大值是64 异步请求放入readyAsyncCalls后,遍历readyAsyncCalls取出任务去执行的时候,如果发现runningAsyncCalls的数量大于等于64,就不从readyAsyncCalls取出任务执行。 public final class Dispatcher {private int …...
C++面向对象(OOP)编程-STL详解(vector)
本文主要介绍STL六大组件,并主要介绍一些容器的使用。 目录 1 泛型编程 2 CSTL 3 STL 六大组件 4 容器 4.1 顺序性容器 4.1.1 顺序性容器的使用场景 4.2 关联式容器 4.2.1 关联式容器的使用场景 4.3 容器适配器 4.3.1 容器适配器的使用场景 5 具体容器的…...
postman几种常见的请求方式
1、get请求直接拼URL形式 对于http接口,有get和post两种请求方式,当接口说明中未明确post中入参必须是json串时,均可用url方式请求 参数既可以写到URL中,也可写到参数列表中,都一样,请求时候都是拼URL 2&am…...
openai最新探索:超级对齐是否可行?
前言 今天来介绍一篇openai最新的paper:弱到强的对齐。 openai专门成立了一个团队来做大模型的超级对齐即superhuman model,之前chatgpt取得成功依赖RLHF即依赖人类反馈,但是作者期望的superhuman model将会是一个能够处理各种复杂问题的强…...
本地websocket服务端结合cpolar内网穿透实现公网访问
文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...
网站开发工程师发展趋势/百度快速提交入口
需求 假设上方excel中的内容是我们的测试用例,需要实现需求如下: 1、读取excel中的内容,转换成指定数据类型如下: 2、现在excel中的case_id 是乱序的,判断根据case_id 进行升序排序 3、前两部操作封装成一个函数&…...
深圳网站seo哪家快/sem对seo的影响有哪些
一、安装第三方模块时: 在安装第三方模块时也有可能出现“SyntaxError: invalid syntax”这个问题,这时需要检查一些是否是在cmd窗口下安装,同时,要到python的安装目录里面,找到pip所在的目录里面进行安装;…...
官方网站建设银行/管理培训机构
如果你是一个菜鸟或者自认为初学者那么本文非常适合你; 不能说这30本书就是最佳组合,但是可以说这个组合不差; 本人曾博览群书,很多书重复,很多书讲的不适用,这些书都是目前书店可以买到的…...
网站开发培训排名/网页优化包括什么
SVN还是很好用滴。在家里装一个也是很必要滴!(俺们以前都是只用不装……)安装过程:安装程序(我的程序有点老):svn-1.4.6-setup.exeTortoiseSVN-1.4.0.7501-win32-svn-1.4.0先把两个都装了&#…...
ceo是什么职位的简称/网站推广优化的原因
一、选择题1. 有如下程序:程序运行后的输出结果是( )。答:A【解析】后的结果2. 设有定义A.B.C.D.答:A 右移运算符。程序执行过程为:定义结构体数组data ,并且初始化,则循环依次输出结构体变量的成员与经过位…...
肥城网站建设/推广方案经典范文
先看效果,没有用任何绘图工具,只是运行了一段python代码。代码如下: _ ( 255, lambda V ,B,c :c and Y(V*VB,B, c -1)if(abs(V)<6)else ( 2c-4*abs(V)**-0.4)/i ) ;v, x1500,1000;Crange(v*x );import struct;Pstruct.pack;M,\ j for X …...