Webpack Sourcemap文件泄露漏洞

news2024/12/25 12:48:27

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.coloradmin.cn/o/1005936.html

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

相关文章

Revit SDK 介绍:CurtainSystem 幕墙系统

前言 这个例子介绍如何创建和修改幕墙系统。 内容 如图所示,创建一个幕墙系统,这个系统里有三个面。 创建幕墙系统 // 遍历体量元素的几何,得到所有的面,保存在 m_mydocument.MassFaceArray // 获取用户选中的面 FaceArray …

哪种IP更适合你的数据抓取需求?

程序员大佬们好!今天我要和大家分享一个关于数据抓取的话题,那就是Socks5爬虫ip和动态IP之间的比较。在进行数据抓取时,选择适合自己需求的工具和技术是非常重要的。Socks5爬虫ip和动态IP都是常见的网络工具,它们在数据抓取方面都…

节能灯与led灯哪个对眼睛好一点?精选好用的led护眼灯

节能灯和led灯相比,肯定是led灯更加护眼一点的。 首先节能灯最大的优点就是节能,可以使用的寿命长。可是和led灯相比,led灯的转换效率会更好一点,也更加节能,可使用寿命也很长。其次节能灯他启动会比较慢,散…

DC电源模块在节省能源方面上的优秀表现

BOSHIDA DC电源模块在节省能源方面上的优秀表现 DC电源模块是现代电子产品中广泛应用的一种电源转换设备,其能够将交流电转换成直流电,并为电子设备提供稳定、可靠的电源供应。相比于传统的交流电源,DC电源模块在节省能源方面上具有优秀的表…

【开发】React框架下如何集成H.265网页流媒体EasyPlayer.js视频播放器?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

人形机器人闭门研讨会报名丨青源Workshop第24期

青源Workshop丨No.24 人形机器人主题闭门研讨会 在全球普遍面临人口老龄化问题的情况下,人形机器人作为一种新兴的技术领域,正逐步在工业、服务、医疗等领域崭露头角,为制造业、农业以及各种服务业带来了新的机遇与解决方案。与传统的工业机器…

激活函数总结(三十二):激活函数补充(Serf、FReLU)

激活函数总结(三十二):激活函数补充 1 引言2 激活函数2.1 Serf激活函数2.2 FReLU激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SELU、GELU、Softmax、Soft…

iPhone 15 Pro深度评测:猫头虎技术团队揭秘Apple最新航空级钛设计的魅力与创新

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

python-爬虫-requests

安装模块 pip install requests在jupyter notebook里使用ShiftTab查看 requests requests库的主要方法 方法解释requests.requset()构造一个请求,支持以下各种方法requests.get()获取HTML的主要方法requests.head()获取HTML头部信息requests.post()向HTML网页提…

【数据结构】堆排序与TopK问题

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.堆的概念和结构 2.堆的实现 2.1向上调整…

(一)探索随机变量及其分布:概率世界的魔法

文章目录 🍋引言🍋什么是随机变量?🍋离散随机变量🍋连续随机变量 🍋随机变量的概率分布🍋离散概率分布🍋0-1分布(Bernoulli分布)🍋二项分布&#…

react频繁使用的js(input防抖请求、节流)

目录 react频繁使用的js(input防抖请求)input的防抖请求节流 提交的节流或者点击按钮等节流节流 code节流 效果 react频繁使用的js(input防抖请求) input的防抖请求 import React, { useState, useEffect, useCallback } from "react"; import { Input } from &quo…

【数据结构】【项目】BitMap?40亿电话号码如何快速去重?

目录 前言实现完整代码 参考资料 前言 40亿电话号码如何快速去重?我们往往会想到bitmap 数据结构中的 Bitmap 是一种位图索引非常高效的数据结构,用于存储处理大规模数据的位信息,其中每个位对应于一个元素,如果位为1&#xff0…

如何实现不同MongoDB实例间的数据复制?

作为一种Schema Free文档数据库,MongoDB因其灵活的数据模型,支撑业务快速迭代研发,广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中,会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整…

相机HAL

相机HAL 1、概览实现 HAL2、相机 HAL2.1 AIDL 相机 HAL2.2 相机 HAL3 功能2.3 Camera HAL1 概览 相机 HAL 相机 实现 HAL android12-release 1、概览实现 HAL HAL 位于 相机驱动程序 和 更高级别的 Android 框架 之间,它定义您必须实现的接口,以便应用…

Python解析MDX词典数据并保存到Excel

原始数据和处理结果: https://gitcode.net/as604049322/blog_data/-/tree/master/mdx 下载help.mdx词典后,我们无法直接查看,我们可以使用readmdict库来完成对mdx文件的读取。 安装库: pip install readmdict对于Windows平台还…

Vue3路由

文章目录 Vue3路由1. 载入vue-router 库2. 实例2.1 Vue.js vue-router 实现单页应用2.2 router-link创建链接2.3 router-view显示与url对应组件2.4 <router-link> 相关属性 Vue3路由 1. 载入vue-router 库 Vue.js 路由需要载入vue-router 库 安装直接下载地址&#xf…

Android Aidl跨进程通讯(四)--接口回调,服务端向客户端发送数据

学更好的别人&#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为3325字&#xff0c;预计阅读9分钟 前言 前几篇介绍了AIDL通讯的基础&#xff0c;进阶和异常捕获&#xff0c;本篇就来看看服务端怎么向客户端来实现发送消息。 实现服务端往客户端发送消息&#xff0c;主要…

6.2.3 【MySQL】InnoDB的B+树索引的注意事项

6.2.3.1 根页面万年不动窝 B 树的形成过程是这样的&#xff1a; 每当为某个表创建一个 B 树索引&#xff08;聚簇索引不是人为创建的&#xff0c;默认就有&#xff09;的时候&#xff0c;都会为这个索引创建一个 根节点 页面。最开始表中没有数据的时候&#xff0c;每个 B 树…

S/4 FI之FBL3N/FBL3H/FAGLL03/FAGLL03H的区别

SAP 系统中&#xff0c;为了显示财务凭证行项目&#xff0c;由于不同的时间开发的功能&#xff0c;但实际在使用的过程&#xff0c;到底有些什么样区别&#xff1f; 本文档就是想对这一个问题做一个整体上的说明。 FBL3N&#xff0c;就是传统的行项目报表&#xff0c;在最早的…