当前位置: 首页 > news >正文

Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析

免责声明

本文所述漏洞复现方法仅供安全研究及授权测试使用;

任何个人/组织须在合法合规前提下实施,严禁用于非法目的;

作者不对任何滥用行为及后果负责,如发现新漏洞请及时联系厂商并遵循漏洞披露规则。


漏洞原理

Next.js 是一个基于 React 的流行 Web 应用框架,提供服务器端渲染、静态网站生成和集成路由系统等功能,它有自己的中间件(middleware)。当使用中间件进行身份验证和授权时,Next.js 14.2.25 和 15.2.3 之前的版本存在授权绕过漏洞。

该漏洞允许攻击者通过操作 x-middleware-subrequest 请求头来绕过基于中间件的安全控制,从而可能获得对受保护资源和敏感数据的未授权访问。

进一步的漏洞原理分析见后文。

影响版本

  • 对于 Next.js 15.x,version < 15.2.3
  • 对于 Next.js 14.x,version < 14.2.25
  • 对于 Next.js 13.x,version < 13.5.9
  • 对于 Next.js 12.x,version < 12.3.5

漏洞利用

一、FOFA

fofa语法:

app="next.js"

找一个真实的网站进行测试,如果不知道测试网站的什么路径,可以尝试先找进入就跳转登录界面的网站,尝试访问他的根路径或者/dashboard路径

二、漏洞利用

找到一个网站,直接访问根目录会重定向到登陆界面,直接访问注册功能也会重定向到登陆界面,未授权不允许注册

而加上x-middleware-subrequest头,并将Value设置为middleware:middleware:middleware:middleware:middleware之后,再次访问注册功能

成功绕过授权,访问到注册界面


漏洞复现

vulhub已有环境,也可以通过vulhub进行复现

一、环境搭建

  1. git clone https://github.com/vulhub/vulhub.git
  2. 进入到漏洞目录下cd /path/to/vulhub/next.js/CVE-2025-29927
  3. 执行命令启动一个基于 Next.js 15.2.2 的存在漏洞的应用:docker compose up -d
  4. 访问3000端口,可以看到环境搭建成功,输入默认凭据 admin:password,可以登录成功并访问仪表盘

二、漏洞复现

仪表盘在根路径下,如果在没有合法凭据的情况下直接访问根路径,将会被重定向到登录页面

在请求中添加 x-middleware-subrequest 请求头,其值为

  • middleware:middleware:middleware:middleware:middleware
  • src/middleware:src/middleware:src/middleware:src/middleware:src/middleware

成功绕过身份验证检查,注意右上角,与之前直接登录是有区别的,现在并不是 admin 的身份


漏洞原理深入分析

漏洞代码分析

(一) 旧版本代码 - 12.2之前

该框架的旧版本(v12.0.7)存在一段代码

  1. 当 next.js 应用程序使用中间件时,将使用runMiddleware函数
  2. runMiddleware函数会检索x-middleware-subrequest头的Value
    1. 使用Value来判断是否需要应用中间件
  1. 具体而言:x-middleware-subrequest头的Value被拆分并使用:作为分隔符创建一个列表
    1. 检查此列表是否包含middlewareInfo.name

这意味着,如果我们将有正确Value的x-middleware-subrequest头添加到请求中,中间件将被完全忽略,并且请求将通过转发NextResponse.next()并成功访问路径,而中间件不会对其产生任何影响。

为了成功未授权访问,x-middleware-subrequest的Value必须包含middlewareInfo.name,但它是什么呢?

1. middlewareInfo.name

middlewareInfo.name的值完全可以猜测,它只是中间件所在的路径。要知道这一点,有必要快速了解一下旧版本中中间件的配置方式。

首先,在版本 12.2之前,该文件必须命名为 _middleware.ts

此外,approuter 仅在 Next.js 版本 13 中发布。此前唯一存在的 router 就是 pages router ,因此该文件必须放在pages文件夹中(router specific)。

这些信息使我们能够推断出中间件的确切路径,从而猜测出x-middleware-subrequest头的值,后者仅由目录名称和文件名称组成,遵循当时的约定,以下划线开头:

x-middleware-subrequest: pages/_middleware

这样便可以完全绕过中间件,从而绕过任何基于它的保护系统

但还需要考虑执行顺序问题

2. 执行顺序

12.2 之前的版本允许嵌套路由将一个或多个_middleware文件放置在树中的任何位置(从pages文件夹开始),并且具有执行顺序

因此,要获得对/dashboard/panel/admin(受中间件保护的)的访问权限,关于middlewareInfo.name的值有三种可能性,因此 x-middleware-subrequest 的值也有三种可能性:

pages/_middleware
pages/dashboard/_middleware
pages/dashboard/panel/_middleware
(二) 新版本代码 - 12.2之后
1. Payload

从版本 12.2 开始,该文件不再包含下划线,而必须简单地命名为middleware.ts

此外,它不能再位于 pages 文件夹中

考虑到这一点,从版本 12.2 开始的第一个版本的有效Payload非常简单

x-middleware-subrequest: middleware
2. /src 目录

还应该考虑到 Next.js 提供了创建/src目录的可能性

除了在项目根目录中放置特殊的 Next.js 应用程序或页面目录外,Next.js 还支持将应用程序代码放置在 src 目录下的常见模式。Next.js文档

在这种情况下,有效Payload将是:

x-middleware-subrequest: src/middleware

因此,无论路径有多少层,总共只有两种可能性

(三) 新版本逻辑变动代码
1. 代码分析

在较新的版本(v15.1.7)中,逻辑又略有改变,看一下这段代码

常量depth的值必须大于或等于常量MAX_RECURSION_DEPTH的值 (即5

每当subrequests(即用:分隔的Value的列表)中的其中一个Value等于中间件路径即params.name时,常量depth就会加 1

params.name跟之前一样,只有两种可能性:middleware/src/middleware

因此,我们只需要在请求中添加以下标头/值即可绕过中间件:

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

或者

x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
2. 这段代码原本是用来做什么的?

这是为了防止递归请求陷入无限循环。

修复代码分析

漏洞已修复,分析一下官方修改了哪些内容

(一) 新增x-middleware-subrequest-id头

packages/next/src/server/lib/router-server.ts

packages/next/src/server/web/sandbox/context.ts

(二) 对x-middleware-subrequest-id进行校验

packages/next/src/server/lib/server-ipc/utils.ts

防御措施

升级到不受影响版本

  • CVE-2025-29927 - GitHub Advisory Database
  • Next.js and the corrupt middleware: the authorizing artifact
  • NVD - CVE-2025-29927
  • CVE 2025 29927 Nextjs Auth Bypass - chestnut’s blog
  • 漏洞通告 | Next.js middleware 权限绕过漏洞
  • Update middleware request header by ijjk · Pull Request #77201 · vercel/next.js
  • CVE-2025-29927 Next.js 中间件权限绕过漏洞复现 - CVE-柠檬i - 博客园

相关文章:

Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析

免责声明 本文所述漏洞复现方法仅供安全研究及授权测试使用&#xff1b; 任何个人/组织须在合法合规前提下实施&#xff0c;严禁用于非法目的&#xff1b; 作者不对任何滥用行为及后果负责&#xff0c;如发现新漏洞请及时联系厂商并遵循漏洞披露规则。 漏洞原理 Next.js 是一个…...

AI时代的数据底座:火山引擎多模态数据湖的设计与实践

资料来源&#xff1a;火山引擎-开发者社区 随着大模型的发展和应用&#xff0c;文本的边界被拓宽&#xff0c;图像、视频、语音各种模态涌现&#xff0c;并给数据管理、检索、计算带来巨大挑战。 火山引擎多模态数据湖 解决方案则可实现海量结构化、半结构化及非结构化数据的统…...

Numpy用法(二)

一.数组变维 1.1 reshape reshape() 可以改变数组维度&#xff0c;但是返回的是一个新的数组&#xff0c;原数组的形状不会被修改.reshape后产生的新数组是原数组的一个视图&#xff0c;即它与原数组共享相同的数据&#xff0c;但可以有不同的形状或维度&#xff0c;且对视图…...

STM32 IIC通信

目录 IIC简介硬件电路连接I2C时序基本单元IIC完整数据帧MPU6050封装硬件IIC内部电路 IIC简介 IIC&#xff08;Inter-Integrated Circuit&#xff09;是 IIC Bus 简称&#xff0c;中文叫集成电路总线。它是一种串行通信总线&#xff0c;使用多主从架构&#xff0c;由飞利浦公司…...

快速入门 JSON 数据格式

引言 JSON&#xff0c;全称 JavaScript Object Notion&#xff0c;类似于XML&#xff0c;YAML&#xff0c;Properties等&#xff0c;是一种数据交换格式&#xff0c;相比于XML&#xff0c;更简单&#xff0c;更轻量&#xff0c;更容易理解。 JSON vs XML 使用 JSON 目前被广…...

FFmpeg —— 中标麒麟系统下使用FFmpeg内核+Qt界面,制作完整功能音视频播放器(附:源码)

🔔 FFmpeg 相关音视频技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 程序运行效果...

硬件测试工装设计不合理的补救措施

硬件测试工装设计不合理的补救措施主要包括重新评估设计需求、优化工装结构、强化工装校准与验证。其中&#xff0c;优化工装结构尤其重要&#xff0c;通过结构优化能够有效解决因设计不合理导致的测试准确性下降和可靠性不足的问题。根据工程实践数据&#xff0c;经过优化结构…...

任意文件读取漏洞

fofa语句&#xff1a;body"/vite/client" /fs/etc/passwd?import&raw?? https://35.175.173.157/fs/etc/passwd?import&raw?? http://geometer.dev.mvergely.com/fs/etc/passwd?import&raw??...

如何使用RK平台的spi驱动 spidev

RK平台spidev驱动读取RC522版本号示例 1. 硬件与驱动确认 确认SPI接口连接&#xff1a;RC522的SPI引脚与RK开发板的对应SPI控制器正确连接&#xff08;CS、CLK、MOSI、MISO&#xff09;检查内核配置&#xff1a; Bash # 内核需启用以下配置 CONFIG_SPIy CONFIG_SPI_MASTERy…...

网路传输层UDP/TCP

一、端口号 1.端口号 1.1 五元组 端口号(port)标识了一个主机上进行通信的不同的应用程序. 如图所示, 在一个机器上运行着许多进程, 每个进程使用的应用层协议都不一样, 比如FTP, SSH, SMTP, HTTP等. 当主机接收到一个报文中, 网络层一定封装了一个目的ip标识我这台主机, …...

1.2-WAF\CDN\OSS\反向代理\负载均衡

WAF&#xff1a;就是网站应用防火墙&#xff0c;有硬件类、软件类、云WAF&#xff1b; 还有网站内置的WAF&#xff0c;内置的WAF就是直接嵌在代码中的安全防护代码 硬件类&#xff1a;Imperva、天清WAG 软件&#xff1a;安全狗、D盾、云锁 云&#xff1a;阿里云盾、腾讯云WA…...

Dify 服务器部署指南

1. 系统要求 在开始部署之前&#xff0c;请确保你的服务器满足以下要求&#xff1a; 操作系统&#xff1a;Linux&#xff08;推荐使用 Ubuntu 20.04 或更高版本&#xff09;内存&#xff1a;至少 4GB RAM存储&#xff1a;至少 20GB 可用空间网络&#xff1a;稳定的互联网连接…...

从车间到数字生态:MES如何引领制造业智能化革命‌

在全球制造业加速迈向工业4.0的浪潮中&#xff0c;传统生产模式正经历颠覆性变革。制造执行系统&#xff08;MES&#xff09;作为连接物理车间与数字世界的核心纽带&#xff0c;正从“生产辅助工具”升级为“智能决策大脑”&#xff0c;推动制造业向数据驱动、柔性化与可持续化…...

Error:Flash Download failed

出现这个就是编译器要换...

Spring容器生命周期详解

Spring容器生命周期详解 Spring容器的生命周期从启动到关闭分为多个阶段&#xff0c;包括Bean的加载、实例化、初始化、使用和销毁。以下是详细流程和关键点&#xff1a; 1. 容器启动阶段 1.1 容器实例化 核心接口&#xff1a;BeanFactory&#xff08;基础容器&#xff09;或…...

革新测试管理 2.0丨Storm UTP统一测试管理平台智能化升级与全流程优化

承接上篇&#xff1a;从基础架构到深度协同 在首篇文章《革新测试管理 | 统一测试管理平台如何实现远程、协同、自动化&#xff1f;》中&#xff0c;我们探讨了Storm UTP如何通过云端协作、自动化测试框架和分布式执行能力打破传统测试壁垒。经过一年多的客户实践与技术迭代&a…...

将 char [] str = “hello,you,world” 改为 “world,you,hello“,要求空间复杂度为1

题目&#xff1a; 将 char [] str “hello,you,world” 改为 "world,you,hello",要求空间复杂度为1 &#xff08;也就是使用的变量只能是单个字符或者常数&#xff0c;不能使用数组&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 解…...

运维规则之总结(Summary of Operation and Maintenance Rules)

运维规则之总结 在运维领域&#xff0c;经验和流程往往决定了系统的稳定性与可靠性。一个运维人&#xff0c;总结出了以下10条运维规则&#xff0c;涵盖了从基础管理到高级策略的全面内容&#xff0c;旨在帮助运维人员更好地应对各种挑战&#xff0c;确保系统的平稳运行。 1.…...

MongoDB 创建数据库

MongoDB 创建数据库 引言 MongoDB 是一款高性能、可扩展的 NoSQL 数据库&#xff0c;广泛应用于大数据领域。在 MongoDB 中&#xff0c;创建数据库是进行数据存储的第一步。本文将详细介绍 MongoDB 数据库的创建方法&#xff0c;包括手动创建和自动创建两种方式。 MongoDB 数…...

SpringSecurity OAuth2:授权服务器与资源服务器配置

文章目录 引言一、OAuth2基础概念与架构二、授权服务器配置三、令牌策略与存储方式四、资源服务器配置五、远程令牌验证与内省总结 引言 在现代分布式应用架构中&#xff0c;OAuth2已成为实现安全授权与认证的事实标准。Spring Security对OAuth2提供了全面支持&#xff0c;使开…...

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

&#x1f680; Vue 2 探秘&#xff1a;visible 和 append-to-body 是谁的小秘密&#xff1f;&#x1f914; 父组件&#xff1a;identify-list.vue子组件&#xff1a;fake-clue-list.vue 嘿&#xff0c;各位前端探险家&#xff01;&#x1f44b; 今天我们要在 Vue 2 的代码丛林…...

C#高级:启动、中止一个指定路径的exe程序

一、启动一个exe class Program {static void Main(string[] args){string exePath "D:\测试\Test.exe";// 修改为你要运行的exe路径StartProcess(exePath);}private static bool StartProcess(string exePath){// 创建一个 ProcessStartInfo 对象来配置进程启动参…...

windows下安装sublime

sublime4 alpha 4098 版本 下载 可以根据待破解的版本选择下载 https://www.sublimetext.com/dev crack alpha4098 的licence 在----- BEGIN LICENSE ----- TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D…...

Qt 日志输出(重定向)

在软件开发中&#xff0c;日志输出是调试和问题排查的关键手段。Qt框架提供了灵活的日志系统&#xff0c;支持从简单的控制台输出到复杂的自定义日志处理。本文将详细介绍Qt中五种常用的日志输出方法&#xff0c;并附上完整代码示例。 一、使用Qt内置日志函数 Qt提供了五个全局…...

51c嵌入式~MOS~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12074888 一、MOS管&#xff1a;米勒效应、开关损耗以及参数匹配 MOS管即场效应管&#xff08;MOSFET&#xff09;&#xff0c;属于压控型&#xff0c;是一种应用非常广泛的功率型开关元件&#xff0c;在开关电源、逆变器…...

一文详解k8s体系架构知识

0.云原生 1.k8s概念 1. k8s集群的两种管理角色 Master&#xff1a;集群控制节点&#xff0c;负责具体命令的执行过程。master节点通常会占用一股独立的服务器&#xff08;高可用部署建议用3台服务器&#xff09;&#xff0c;是整个集群的首脑。 Master节点一组关键进程&#xf…...

Linux内核软中断分析

一、软中断类型 在Linux内核中&#xff0c;中断处理分为上半部&#xff08;硬中断&#xff09;和下半部。上半部负责快速响应硬件事件&#xff0c;而下半部用于处理耗时任务&#xff0c;避免阻塞系统。下半部有三种机制&#xff1a;软中断&#xff08;Softirq&#xff09;、小任…...

从医疗大模型到综合医疗智能体:算法、架构与路径全流程分析

一、引言 1.1 研究背景与意义 随着信息技术的飞速发展,医疗领域正经历着深刻的变革。医疗智能体作为人工智能技术在医疗行业的重要应用,正逐渐成为提升医疗服务质量、优化医疗流程、促进医疗资源合理分配的关键力量。从最初简单的医疗信息管理系统,到如今能够辅助诊断、制定…...

2025跳槽学习计划

&#xff08;1&#xff09;编程基础&#xff1a; 目录学习资料Chttps://www.bilibili.com/video/BV1z64y1U7hs?spm_id_from333.1387.favlist.content.clickLinuxPytorchhttps://www.bilibili.com/video/BV1if4y147hS?spm_id_from333.1387.favlist.content.clickopencv数据结…...

数据库后续

-- 添加作者字段 alter table t_hero add author varchar(100); -- 更新数据 update t_hero set author "曹雪芹" where id 1; update t_hero set author "曹雪芹" where id 2; update t_hero set author "曹雪芹" where id 3; upd…...

程序员软件工具推荐列表

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 程序员软件工具推荐列表1. Snipaste2. VSCod…...

如何在WordPress中限制用户登录到一台设备

在当今的互联网环境下&#xff0c;许多用户习惯共享账户信息&#xff0c;虽然看似无害&#xff0c;却可能对网站运营产生负面影响。尤其是对于那些经营会员网站和在线课程的平台&#xff0c;限制用户同时登录的设备数量显得尤为重要。本文将详细探讨如何在WordPress中限制用户登…...

基于大模型的自发性气胸全方位预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测自发性气胸的原理及技术基础 2.1 大模型介绍 2.2 模型构建与训练数据 2.3 模型训练与优化 三、术前风险预测与准备 3.1 术前风险预测指标 3.2 基于预测的术前准备 3.3 手术方案与麻醉方案制定…...

文章记单词 | 第14篇(六级)

一&#xff0c;单词释义 affection&#xff1a;n. 喜爱&#xff0c;钟爱&#xff1b;爱慕之情&#xff1b;感情stream&#xff1a;n. 小河&#xff0c;溪流&#xff1b;一连串&#xff0c;源源不断&#xff1b;水流&#xff0c;气流&#xff1b;vi. 流&#xff0c;流动&#x…...

系统如何查找文件?inode号又是什么?

下面分别详细解释您提到的三个问题&#xff1a; “文件系统怎么定位文件”、“inode 是什么”、“为什么删除后还可能被占用”。 一、文件系统怎么定位文件 1.1 目录与文件名并不直接存储文件数据 在常见的 Unix/Linux 文件系统&#xff08;如 ext4、xfs&#xff09;或类似的…...

Uni-app入门到精通:tabBar节点实现多页面的切换

tabBar节点用于实现多页面的切换。对于一个多tabBar应用&#xff0c;可以通过tabBar节点配置项指定一级导航栏&#xff0c;以及tabBar切换时显示的对应页面。在pages.json中提供tabBar节点配置&#xff0c;不仅是为了方便快速开发导航&#xff0c;更重要的是提示App平台和小程序…...

torchvision中数据集的使用

1、torchvision及其数据集的介绍 1.1 torchvision介绍 torchvision 是 PyTorch 的一个官方库&#xff0c;专门用于计算机视觉任务。它提供了以下核心功能&#xff1a; 预训练模型&#xff1a;如 ResNet、VGG、EfficientNet 等。数据集&#xff1a;内置常用视觉数据集&#xf…...

uniapp开发实战自定义组件形式实现自定义海报功能

在 UniApp 中实现自定义海报功能,可以通过 Canvas 来绘制海报。Canvas 提供了丰富的绘图 API,可以精确控制文字、图片和二维码的位置。下面是一个完整的示例,展示如何创建一个自定义海报组件。 项目结构 假设你的项目结构如下: project-root/ ├── pages/ │ └──…...

Java EE 进阶:MyBatis-plus

MyBatis-plus的介绍 MyBatis-plus是MyBatis的增强工具&#xff0c;在MyBatis的基础上做出加强&#xff0c;只要MyBatis有的功能MyBatis-plus都有。 MyBatis-plus的上手 添加依赖 在我们创建项目的时候&#xff0c;我们需要添加MyBatis-plus和mysql的依赖 MyBatis-plus的依赖…...

信息学奥赛一本通 1514:【例 2】最大半连通子图 | 洛谷 P2272 [ZJOI2007] 最大半连通子图

【题目链接】 ybt 1514&#xff1a;【例 2】最大半连通子图 洛谷 P2272 [ZJOI2007] 最大半连通子图 【题目考点】 1. 图论&#xff1a;强连通分量 缩点 2. 图论&#xff1a;拓扑排序 有向无环图动规 【解题思路】 对于图中任意两顶点u、v&#xff0c;满足u到v或v到u有路径…...

正则表达式-笔记

文章目录 一、正则表达式二、正则表达式的基本语法字符类普通字符非打印字符特殊字符 量词限定符锚点修饰符&#xff08;标记&#xff09; 三、在 Python 中使用正则表达式简单搜索提取信息替换文本 参考 从验证用户输入&#xff0c;到从大量文本中提取特定信息&#xff0c;再到…...

Linux 练习二 LVS的NAT模式

作业 要求&#xff1a;使用LVS的 NAT 模式实现 3 台 RS 的轮询访问。IP地址和主机自己规划。 节点规划 主机角色系统网络IPclientclientredhat 9.5仅主机192.168.60.100/24lvslvsredhat 9.5仅主机 NAT192.168.60.200/24 VIP 192.168.23.8/24 DIPnginxrs1redhat 9.5NAT192.16…...

以科技赋能,炫我云渲染受邀参加中关村文化科技融合影视精品创作研讨会!

在文化与科技深度融合的时代浪潮下&#xff0c;影视创作行业经历着前所未有的变革。影视创作行业发展态势迅猛&#xff0c; 同时也面临着诸多挑战。为促进影视创作行业的创新发展&#xff0c;加强业内交流与合作&#xff0c; 3月25日下午&#xff0c;海淀区文化创意产业协会举办…...

Matlab2024a免费版下载教程

Matlab是一个高性能的数学计算与仿真软件&#xff0c;广泛应用于科学计算、数据分析、算法开发以及工程绘图等多个领域。它提供了强大的矩阵运算能力、丰富的内置函数库以及灵活的编程环境&#xff0c;使得用户能够高效地解决复杂的数学问题。本文&#xff0c;我将为大家详细介…...

人工智能:officeAI软件,如何调整AI对话界面的字体?

1、首先&#xff0c;随便打开一个excel&#xff08;使用wps&#xff09; 依次点击上方的【OfficeAI】—【右侧面板】 2、在弹出的面板中&#xff0c;输入&#xff1a;助手设置 &#xff0c; 然后按【回车】发送出去 3、之后会弹出界面&#xff0c;在【样式设定】中&#xff…...

ARCGIS PRO SDK VB2022 图层要素类类型判断

arcgis pro 常见要素类类型有以下几种&#xff1a; FeatureLayer ——要素图层&#xff08;矢量数据&#xff09; RasterLayer ——栅格图层 MapImageLayer ——地图图像图层 VectorTileLayer ——矢量切片图层 SceneLayer …...

一种监控录像视频恢复的高效解决方案,从每一帧中寻找可能性

该软件旨在恢复从监控设备中删除或丢失的视频。该程序经过调整以处理大多数流行供应商的闭路电视系统中使用的专有格式&#xff0c;并通过智能重建引擎进行了增强&#xff0c;能够为监控记录提供任何通用解决方案都无法实现的恢复结果。如果不需要持续使用该软件&#xff0c;则…...

windows安装JDK并配置环境变量

一、JDK安装 1.控制面板-程序有的话&#xff0c;先卸载 2.双击安装 3.下一步 4.选择安装路径 5.下一步&#xff0c;等着安装完成 6.校验安装是否成功&#xff0c;winr,输入“cmd” 疑问&#xff1a;安装17&#xff0c;显示21&#xff1f;&#xff1f; 二、环境变量 1.计算机…...

Web3.0合约安全:重入攻击防御方案

本文深度剖析智能合约重入攻击的13种新型变种及其防御体系&#xff0c;结合EIP-6780标准与Layer2安全方案&#xff0c;系统性阐述从代码层到协议层的立体防护策略。通过解析Uniswap、Compound等顶级项目的安全实践&#xff0c;揭示如何构建零重入风险的智能合约架构。 第一章 重…...

一文详解QT环境搭建:ubuntu20.4安装配置Qt5

随着软件开发技术的不断进步&#xff0c;跨平台应用程序的需求日益增长&#xff0c;开发者们面临着如何在不同操作系统之间保持代码的一致性和效率的问题。Qt作为一个成熟的跨平台C框架&#xff0c;在这方面提供了卓越的支持&#xff0c;不仅简化了GUI应用程序的创建过程&#…...