API已成为攻击者首要目标,企业如何保护API安全?

随着云计算、移动互联网、物联网的蓬勃发展,越来越多的应用开发深度依赖于API之间的相互调用。特别是疫情常态化后,协同办公、在线教育、直播短视频等线上应用蓬勃发展,API在其中既能够起到连接服务的功能,又可以用来传输数据,随着API的绝对数量持续增长,通过API传递的数据量也飞速增长。

与此同时,API也正成为攻击者重点光顾的目标。据Salt Security《State of API Security Report, Q3 2021》报告显示,2021年上半年,整体API流量增长了141%,API攻击流量则增长了348%,针对API的攻击流量正在以普通API流量的3倍速度增长。报告还发现,安全问题在API项目关注的名单中名列前茅,很少有受访者认为他们有信心识别和阻止API攻击。

这是由于API的广泛使用和链接为恶意攻击者提供了广阔的攻击面,一旦成功攻击API,就能获取大量企业核心业务逻辑和敏感数据。除此之外,很多企业并不清楚自己拥有多少API,也并不能保证每个API都具有良好的访问控制,被遗忘的影子API和僵尸API,为攻击者提供了唾手可得的机会。相对于传统Web窗体,攻击API的成本更低、价值更高。

正因如此,2021年发生了很多重量级的API攻击事件,引发了社会各界的广泛关注,例如:黑客通过API漏洞入侵了7亿多Linkedln用户的数据,并在暗网上出售这些数据;黑客攻击Parler网站的API安全漏洞,非法获得1000万用户超过60TB的数据;Clubhouse因API安全漏洞泄露了130万条用户记录。

可以预见,2022年针对API的攻击将成为恶意攻击者的首选,越来越多的黑客利用API窃取敏感数据并进行业务欺诈,为API构建安全防护体系已势在必行。

新兴网络威胁下,传统API网关局限性凸显

一个严峻的事实是,API发展到现在,授权认证体系已经比较完善,但是在授权之后访问的控制相对薄弱。管控的颗粒度因API接口业务需要而不同,在带来访问便利的同时,也可能被恶意利用,带来信息泄漏和被滥用的风险。API设计之初就是为程序调用准备的,天然是工具行为,利用自动化工具通过合法授权下的API滥用,已成为API攻击的难题。从API的提供方角度,为使用和管理的方便,过度的API开放和宽泛的API调用参数返回,既可能被恶意利用,也可能无形中造成信息泄漏和被滥用的风险。因此传统API安全网关提供的身份认证、权限管控、速率限制、请求内容校验等安全机制几乎无用武之地。

例如,身份认证机制可能存在单因素认证、无口令强度要求、密码明文传输等安全隐患,而访问授权机制风险通常表现为用户权限大于其实际所需权限。同时,即使建立了身份认证、访问授权、敏感数据保护等机制,有时仍无法避免攻击者以机器模拟正常用户行为、运用大量代理IP进行大规模攻击等多种方式来避免速率限制。

在如今互联网的开放场景下,API的应用和部署面向个人、企业、组织机构等不同用户群,是外部网络攻击的主要对象之一,因此更需时刻警惕外部安全威胁。针对API的常见网络攻击包括:重放攻击、DDoS 攻击、注入攻击、会话 cookie 篡改、中间人攻击、内容篡改、参数篡改等,这些新型的安全威胁正在变得更加复杂化、多样化、隐蔽化、自动化。

解铃还须系铃人,提前预防常见的API漏洞,尽可能的保护API的安全!

1、图形验证码

将图形校验码和手机验证码进行绑定,在用户输入手机号码以后,需要输入图形校验码成功后才可以触发短信验证,这样能比较有效的防止恶意攻击。目前大部分应用都是采用这种方式。

2、限定请求次数

在服务器端限定同一IP地址,同一设备,同时间范围内的接口请求次数。比如同一号码重复发送的时间间隔,一般为60或120秒;设置每个IP每天最大的发送量;设置单个手机号每天的最大发送量。

3、流程条件限定

将手机短信验证放在最后进行,比如需要用户必须注册后,或者用户必须填写了某些条件才能进行短信验证。

4、归属地是否一致

服务器端检查用户的IP所在地与手机号归属地是否匹配,如果不匹配则提示用户手动操作等。

5、服务器接口验证

当用户登录成功后,返回一个由Token签名生成的秘钥信息(Token可使用base64编码和md5加密,可以放在请求的Header中),然后对每次后续请求进行Token的封装生成,服务器端在验证是否一致来判断请求是否通过。

(1) 常规的方法:用户登陆后生成token,返回客户端,然后服务器使用AOP拦截controller方法,校验token的有效性,每次token是一样的;

(2) 用户登陆后生成临时token,存到服务器,并返回客户端,客户端下次请求时把此token传到服务器,验证token是否有效,有效就登陆成功,并生成新的token返回给客户端,让客户端在下一次请求的时候再传回进行判断,如此重复。 这种方法有性能问题,但也有一个漏洞,如果用户在一次请求后,还未进行下一次请求就已被黑客拦截到登录信息并进行假冒登录,他一样可以登录成功并使用户强制下线,但这种方法已大大减少被假冒登录的机会。

(3) 两层token:一般第一次用账号密码登录服务器会返回两个token,时效长短不一样,短的时效过了之后,发送时效长的token重新获取一个短时效,如果都过期,那么就需要重新登录了。当然更复杂你还可以做三层token,按照业务分不同token。

6、采用https

线上的api接口开启https访问,这样做的被抓包的难度会提高很多,而且https需要秘钥交换,可以在一定程度上鉴别是否为伪造的网络非真人IP地址。

7、服务器端代理请求

这也是解决网站跨域的方案之一,采用服务器代理可以有效的防止接口真实地址的暴露。

8、德迅云安全加速SCDN

安全加速SCDN集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案,已使用内容分发网络或全站加速网络的用户一键开启安全防护相关配置,全方位保障业务内容分发,一键集成以上7点防护方案,有效防止API攻击,为企业用户保驾护航。

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

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

相关文章

SSD (Pytorch)复现 Ubuntu20.04

源码地址:https://github.com/bubbliiiing/ssd-pytorch 二、环境配置 1、创建环境 使用anaconda进行环境配置,创建一个ssd的环境: conda create -n ssd python3.8 -y2、进入环境 激活anaconda环境: conda activate ssd3、torch安…

使用PyMuPDF(fitz)提取PDF文件文本内容

安装PyMuPDF库(如果还没有安装的话): pip install pymupdf使用以下Python脚本来提取指定页面的文本: import fitz # 导入PyMuPDF库def extract_text_from_specific_page(file_path, page_number):# 打开PDF文件doc fitz.open(…

C语言进阶 文件操作知识(下)

一. 文本文件和二进制文件 根据数据的组织形式,数据文件被称为文本文件或者二进制文件。 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。 如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。…

大模型RAG应用与LangChain4初探

RAG指的是一种名为“检索增强生成”(Retrieval-Augmented Generation)的模型架构 引言 大模型(LLM)具备的知识只局限于它被训练的数据,如果我们直接向大模型问一个特定的问题,大模型都会做出一个回答,但是这个回答可能是大模型的幻觉,对于特定领域的问题,大模型的表现…

MY SQL 实验二:

实验2 创建实验用的数据库 一、实验目的 通过实验掌握使用Mysql数据库管理系统中建立数据库和用SQL定义基本表、修改基本表和删除基本表的方法。 二、实验原理 数据库定义: (一)创建数据库(模式) CREATE {DATABASE | …

java爬虫代理ip(java爬虫代码示例)

java爬虫代理ip 在编写java爬虫时,经常会遇到需要使用代理IP来访问目标网站的情况。这时候,我们就需要编写代码来实现代理IP的功能。接下来,我们将为大家介绍如何在java爬虫中使用代理IP,以及给出相应的代码示例。 首先&#xff…

腾讯游戏海外扩张,增持芬兰游戏开发商股份持股比例增至14.8%

易采游戏网5月8日消息,近日腾讯再次出手,大幅增持了芬兰知名游戏开发商Remedy Entertainment的股份,持股比例猛增至14.8%。这一举动引起了业界和投资者的广泛关注。 据了解,腾讯此次增持是在2024年4月24日完成的。根据芬兰法律规…

TCP通信并发:

上次的程序只能保持,单线程或者进程 多进程并发服务器 进程的特点(有血缘关系) 创建子进程:fork(); 虚拟地址空间被复制 ,从一份变成两份(用户区和内核区&#xff09…

JVM垃圾回收详解

一、基本概念 1、HotSpot VM :是由 Oracle 公司开发的一种 Java 虚拟机(JVM),是 Java SE 平台上最广泛使用的虚拟机之一。它是 OpenJDK 的一部分,也是 Oracle JDK 的基础之一。使用即时编译(Just-In-Time …

为什么使用bean注解创建IRule,就可以定义负载均衡规则

Bean public IRule randomRule() { return new RandomRule(); } 当您在Spring Cloud中定义一个IRule的Bean时,您实际上是在配置Ribbon的负载均衡规则。这个Bean会被注入到Ribbon客户端中,并在客户端发起服务调用时用于决定如何选择目标服务实例。 这里需…

ELK原理详解

ELK原理详解 一、引言 在当今日益增长的数据量和复杂的系统环境中,日志数据的收集、存储、分析和可视化成为了企业运营和决策不可或缺的一部分。ELK(Elasticsearch、Logstash、Kibana)堆栈凭借其高效的性能、灵活的扩展性和强大的功能&…

使用ROW_NUMBER()分组遇到的坑

1、再一次清洗数据时,需要过滤重复数据,使用了ROW_NUMBER() 来分组给每组数据排序号 在获取每组的第一行数据 with records as(select cc.F_Id as Id,REPLACE(cc.F_CNKITitle,char(10),1) as F_CNKITitle,REPLACE(REPLACE(cc.F_Special,专题&#xff1…

Kubernetes——基础认识

目录 前言 什么是云原生 云元素 K8s与中间件以及微服务之间的关系 Kubernetes发展历史 一、简介 1.Kubernetes是什么 2.为什么要使用Kubernetes 3.Kubernetes特性 3.1自我修复 3.2弹性伸缩 3.3自动部署和回滚 3.4服务发现和负载均衡 3.5集中化配置管理和密钥管理…

车载测试系列:车载测试流程

车载测试流程是保证软件质量的重要支撑,优秀的团队都必须拥有规范的流程体系支撑,它能够约束测试人员的测试行为,约束测试环境的测试精度,提升测试的覆盖度,保证团队成员工作的协调性。 该测试流程建立的依据&#xf…

书生浦语训练营第2期-第7节笔记

一、为什么要研究大模型的评测? 首先,研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多个通用任务上已经达到或超越了人类水平,但仍然存在质疑,即这些模型的能力是否只是对训练数据的…

二分查找向下取整导致的死循环69. x 的平方根

二分查找向下取整导致的死循环 考虑伪题目:从数组arr中查找出目标元素target对应的下标,如果数组中不存在目标元素,找 到第一个元素值小于target的元素的下标。 编写二分查找算法如下: Testvoid testBinarySearch(){int[] arr n…

java如何打印数组所有元素

java如何打印数组所有元素 用for循环的话 语法格式是 for(int i0;i<数组名.length;i) { System.out.prontln(数组名[i]); } 如果用while循环 先定义一个变量&#xff0c;变量的值等于0 假定变量名为j int j0; while(j<数组名.length) { System.out.println(数组…

Web 功能以及源码讲解

Web 功能以及语言讲解 培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;624032112 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 移动应用开发群&#xff1a;548238632 短视频制作群&#xff1a; 744125867极…

leetcode203-Remove Linked List Elements

题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#xff1a; 输入&…

Eigen中的刚体变换表达

在Eigen中&#xff0c;旋转矩阵、变换矩阵、欧拉角都可以表示为Eigen库中的特定类型的矩阵。 1、旋转矩阵 旋转矩阵通常用于表示三维空间中的旋转操作。在Eigen中&#xff0c;可以使用Eigen::Matrix3d类型来表示三维的旋转矩阵。通常&#xff0c;旋转矩阵是一个正交矩阵&…