解决Vue2官网Webpack源码泄露漏洞

一:漏洞产生

Webpack是一个JavaScript应用程序的静态资源打包器。大部分Vue等应用项目会使用Webpack进行打包,如果没有正确配置,就会导致项目源码泄露,可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。

F12查看源代码,经过Webpack打包后末尾会存在这样的注释

将注释内容拼接到域名后,访问下载js.map文件

http://www.xxxx.com/js/app.8cdc0ffa.js.map

然后在文件目录下打开终端输入: reverse-sourcemap -v app.8cdc0ffa.js.map -o test

二:解决办法

解决思路

Webpack 生成的.map 文件(即 JavaScript 源映射文件)会暴露项目的原始代码结构,这可能导致敏感信息泄露。要解决此问题,主要从两方面入手:一是禁止生成这些源映射文件,二是保证生产环境无法访问到它们。

具体操作方法

1. 禁止生成 JavaScript 源映射文件

若项目采用 Vue CLI 构建,可按以下步骤操作:

首先,打开项目根目录下的vue.config.js文件。要是没有这个文件,就自行创建一个。

接着,在文件里添加或修改如下配置:

javascript 复制代码
module.exports = {
  productionSourceMap: false, // 关闭生产环境的源映射文件生成
  configureWebpack: {
    devtool: false // 确保开发工具不会生成源映射
  }
}

若项目是基于 Webpack 直接配置的,就需要修改webpack.prod.js配置文件:

javascript 复制代码
const config = {
  // 其他配置...
  devtool: false, // 关闭生产环境的源映射
  optimization: {
    // 其他优化配置...
  }
};
2. 删除已存在的源映射文件

在项目目录下打开终端,执行以下命令删除现有源映射文件:

bash 复制代码
find dist -name "*.js.map" -type f -delete

如果你使用的是 Windows 系统,可以使用 PowerShell 命令:

bash 复制代码
Get-ChildItem -Path dist -Filter *.js.map -Recurse | Remove-Item
3. 配置 Nginx/Apache 禁止访问源映射文件

如果你使用的是 Nginx 服务器,可在配置文件中添加如下规则:

bash 复制代码
location ~ \.js\.map$ {
    deny all;
    return 404;
}

若是 Apache 服务器,则在.htaccess文件中添加以下内容:

bash 复制代码
<FilesMatch "\.js\.map$">
    Order deny,allow
    Deny from all
</FilesMatch>
4. 更新项目部署流程

修改 CI/CD 脚本或者部署流程,防止源映射文件被部署到生产环境。比如,在构建命令中明确排除这些文件:

bash 复制代码
npm run build -- --no-source-map
5. 验证修复效果

部署修改后的代码之后,要验证源映射文件是否还能被访问。具体操作是尝试访问之前的 URL:

复制代码
http://www.gzznjk.com/js/app.8cdc0ffa.js.map

如果修复成功,访问时会返回 404 错误。

额外建议

  1. 检查项目依赖,保证使用的是 Webpack 和 Vue 的最新稳定版本。
  2. 对所有生产环境的域名进行扫描,确认没有其他源映射文件泄露的情况。
  3. 把源映射文件添加到.gitignore中,避免它们被提交到版本控制系统。
  4. 考虑使用代码混淆工具,如 Terser,来增强生产代码的安全性。

通过上述步骤,就能有效解决 Webpack 源码泄露漏洞,保护项目的敏感信息不被泄露。

相关推荐
LFly_ice29 分钟前
学习React-23-React-router
前端·学习·react.js
我叫张小白。1 小时前
TypeScript对象类型与接口:构建复杂数据结构
前端·javascript·typescript
墨客希1 小时前
如何快速掌握大型Vue项目
前端·javascript·vue.js
大福ya1 小时前
AI开源项目改造NextChat(ChatGPT-Next-Web)实现前端SSR改造打造一个初始框架
前端·chatgpt·前端框架·开源·aigc·reactjs·ai编程
n***33351 小时前
SpringBoot返回文件让前端下载的几种方式
前端·spring boot·后端
纯粹的热爱2 小时前
🌐 阿里云 Linux 服务器 Let's Encrypt 免费 SSL 证书完整部署指南
前端
北辰alk2 小时前
Vue3 自定义指令深度解析:从基础到高级应用的完整指南
前端·vue.js
AAA阿giao2 小时前
使用 Vite + Vue 3 搭建项目并配置路由的全流程(含国内镜像加速)
vue.js·node.js·vite
小熊哥7222 小时前
谈谈最进学习(低延迟)直播项目的坎坷与收获
前端
用户89225411829012 小时前
游戏框架文档
前端