Webpack Sourcemap文件泄露漏洞

Webpack Sourcemap文件泄露漏洞

  • 前言
  • 一、Webpack和Sourcemap
    • 1.1 什么是Webpack
    • 1.2 什么是Sourcemap
  • 二、漏洞利用
    • 2.1 使用reverse-sourcemap工具
    • 2.1 直接看前端代码
  • 三、漏洞挖掘
  • 漏洞修复


前言

Webpack主要是用于前端框架进行打包的工具,打包后形成.js.map文件,如果.js.map文件没有删除,使用Sourcemap进行文件还原,就可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。


一、Webpack和Sourcemap

1.1 什么是Webpack

  1. Webpack 是一个现代化的 JavaScript 应用程序的静态模块打包器。它主要用于将多个 JavaScript 文件及其依赖打包成一个或多个静态资源,例如,可以将多个模块化的 JavaScript 文件打包成一个单独的 JavaScript 文件。

  2. Webpack 支持现代 JavaScript(包括 ES6 及以上版本)、CSS、图像等各种类型的资源,以及各种模块加载器和插件,可以通过配置文件进行高度的自定义和扩展。其核心功能包含模块化打包、代码拆分、加载器扩展、插件系统等。

  3. 使用 Webpack 可以帮助开发者优化应用程序的性能,例如,通过代码拆分可以减少首次加载时间,通过压缩和优化可以减小文件体积,提供多种方式自动和异步加载资源等。另外,Webpack 还支持 HMR(热模块替换)功能,可以在开发过程中实时更新应用程序,提高开发效率。

  4. Webpack 在现代前端开发中被广泛应用,是前端工程化的重要工具之一。它支持主流的前端框架和工具链,是构建复杂 JavaScript 应用的强大工具。

简单来说:Webpack就是打包工具

1.2 什么是Sourcemap

  1. Source Map 是一种文件格式,用于将压缩(或混淆)后的代码映射回原始源代码,目的是方便开发者在调试阶段定位问题。

  2. 在前端开发中,为了提升网站性能,通常会对 JavaScript 或 CSS 文件进行压缩和合并,以减小文件体积。然而,压缩后的代码往往难以阅读和调试。这时,使用 Source Map 可以解决这个问题。

  3. Source Map 文件包含了压缩后的代码与原始源代码的映射关系。当浏览器加载并执行压缩后的代码时,会同时加载对应的 Source Map 文件。如果开发者需要调试代码问题,浏览器会利用 Source Map 文件将压缩后的代码映射回原始源代码,以便在开发者工具中显示原始源代码的正确位置和行数。

  4. 通过使用 Source Map,开发者可以在浏览器的开发者工具中准确地对应到编写代码时的位置,方便进行断点调试、查看变量值、定位错误等。这大大简化了调试流程,节省了开发时间,提高了开发效率。

简单来说:Source Map就是把打包的文件进行还原

需要注意的是,为了保护源代码的安全性,发布到生产环境时,应将 Source Map 文件禁用或从代码中移除,避免源代码泄漏。

二、漏洞利用

2.1 使用reverse-sourcemap工具

reverse-sourcemap工具会把.js.map文件编程JS代码(JS代码中可能存在各种信息如API,用户名,密码等)。

  1. reverse-sourcemap 安装
    npm install --global reverse-sourcemap
    
  2. reverse-sourcemap使用
    reverse-sourcemap -h  # 判断reverse-sourcemap是否安装成功
    reverse-sourcemap -v ****.js.map -o output 
    # 1. ****.js.map是下载的map文件
    # 2. output是还原的js文件,其中包含文件泄露

在这里插入图片描述

2.1 直接看前端代码

在这里插入图片描述

三、漏洞挖掘

SourceDetector是一个谷歌浏览器插件,此插件可以自动的判断网站是否存在js.map文件,并且能够利用该插件直接下载到js.map的Vue源码

  1. 下载源码
git clone https://github.com/LuckyZmj/SourceDetector-dist
  1. 谷歌安装

把下载的dist文件加入到谷歌浏览器插件中
在这里插入图片描述
下载成功的标志:

在这里插入图片描述


漏洞修复

  1. 临时的解决方法就是删除代码目录下的.map文件;

  2. 永久的解决方法就是在build的时候禁用产生map文件的功能;在scripts/build下的build.js 文件中添加如下配置:
    process.env.GENERATE_SOURCEMAP = ‘false’;重新build就不会再产生sourcemap文件了

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

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

相关文章

单例模式-饿汉模式、懒汉模式

单例模式,是设计模式的一种。 在计算机这个圈子中,大佬们针对一些典型的场景,给出了一些典型的解决方案。 目录 单例模式 饿汉模式 懒汉模式 线程安全 单例模式 单例模式又可以理解为是单个实例(对象) 在有些场…

LeetCode 35. 搜索插入位置

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 该题我们可以采用二分查找的方式,我们可以把数组分为,小于target的一边儿和大于等于target的一边儿。 当midleft(right-left)下标所对应的数大于等于targ…

多版本CUDA安装切换

系统中默认的安装CUDA为12.0,现在需要在个人用户下安装CUDA11.7。 CUDA 下载 CUDA官网下载 安装 Log file not open.Segmentation fault (core dumped)错误 将/tmp/cuda-installer.log删除即可。重新安装,去掉驱动的安装,设置Toolkit的安装…

骨科常用评估量表汇总,详细评分标准分享,建议收藏!

根据骨科医生的量表使用情况,笔者整理了9个常用的骨科量表,可在线评测并直接出结果,还可转发或生成二维码使用,或创建项目进行数据管理,有需要的小伙伴赶紧收藏! Harris髋关节评分系统 Harris髋关节评分系…

3D点云处理:Opencv Pcl实现深度图转点云(附源码)

文章目录 0. 测试效果1. 代码实现文章目录:3D视觉个人学习目录0. 测试效果 处理结果1. 代码实现 文章中提供的深度图像,深度图像一般以.tiff和.png保存,可以通过Opencv中的 c v : : i m r

fabirc 将图像绘制原点定为图形内部

添加元素时,设置属性: originX: center, originY: center, 如我定义两个矩形: addrect () { // 矩形1var rect new fabric.Rect({top: 50,left: 100,width: 100,height: 70,fill: #F56C6C,strokeUniform: true // 限制边框宽度缩放})canva…

LINUX 网络管理

目录 一、NetworkManager的特点 二、配置网络 1、使用ip命令临时配置 1)查看网卡在网络层的配置信息 2)查看网卡在数据链路层的配置信息 3)添加或者删除临时的网卡 4)禁用和启动指定网卡 2、修改配置文件 3、nmcli命令行…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…

深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站

​ 2023年9月20~22日,深圳唯创知音电子将在 深圳宝安国际会展中心(9号馆9B1)为您全面展示最新的芯片产品及应用方案,助力传感器行业的发展。 作为全球领先的芯片供应商之一,深圳唯创知音电子一直致力于为提供高质量、…

分类预测 | Matlab实现基于BP-Adaboost数据分类预测

分类预测 | Matlab实现基于BP-Adaboost数据分类预测 目录 分类预测 | Matlab实现基于BP-Adaboost数据分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于BP-Adaboost数据分类预测(Matlab完整程序和数据) 2.多特征输入…

K8S基础概念

1、Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的Kubelet、kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁、以及实现软件模式的负载均…

UMA 2 - Unity Multipurpose Avatar☀️二.概念介绍

文章目录 🟥 UMA核心🟧 UMA Data 数据类1️⃣ DNA2️⃣ Slots 插槽Overlays 纹理贴图🟨 Base Recipe 基础人形Recipes🟩 Wardrobe Recipes 服饰Recipes🟥 UMA核心 UMA核心组件是 DynamicCharacterAvatar ,后续我们跟插件交互的API,例如捏脸的参数,都是与之交互完成的…

基于Android的生鲜农产品商城交易设计与实现

摘 要 人们生活水平随着发展不断的提升,人们对生鲜产品消费比越来越依赖,都希望吃到新鲜的食品。消费的加大给生鲜了全新的供应链及销售模式,那种传统的生鲜配送模式也在发生着变化。生鲜系统电商平台在我国目前是属于盛行的电商行业&#x…

算法:经典贪心算法--跳一跳[2]

1、题目: 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 返回到达 nums[n - 1] 的最小跳跃次数。生…

消息队列MQ

一、消息队列 网络端的Http请求默认采用的是同步请求方式,客户端与服务器端是基于请求和响应模式进行通信的。也就意味着,客户端发起请求。必须要等待服务器端完成处理结果给客户端才能继续进行下一步操作,如果服务器发送网络延迟、宕机、卡顿…

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个…

jmeter采集ELK平台海量业务日志( 采用Scroll)

由于性能测试需要,需采集某业务系统海量日志(百万以上)来使用,做稳定性压测使用。但Elasticsearch的结果分页size单次最大为10000(运维同事为保证ES安全)。为了能够快速采集ELK平台业务日志,可以…

Tomcat多实例 + Tomcat负载均衡、动静分离(Nginx联动)

多实例联动 一、Tomcat 多实例1.1 什么是Tomcat多实例?1.2 配置思路1.3 配置实现1.3.1 安装jdk1.3.2 安装tomcat1.3.3 配置 tomcat 环境变量1.3.4 修改端口号1.3.5 修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量1.3.6 启…

Java实现合并多个excel操作

涉及较多封装的工具类,所有依赖的工具类均提供代码,根据名称新建对应的类,在每个工具类中再引入相应的依赖即可 首先需要明确的是,需要合并的每个excel的表头名称必须是相同的, 针对表头,建立传输的dto&a…

可视化大屏设计模板 | 主题皮肤(报表UI设计)

下载使用可视化大屏设计模板,减少重复性操作,提高报表制作效率的同时也确保了报表风格一致,凸显关键数据信息。 软件:奥威BI系统,又称奥威BI数据可视化工具 所属功能板块:主题皮肤上传下载(数…