解决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 源码泄露漏洞,保护项目的敏感信息不被泄露。

相关推荐
0思必得03 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5164 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino4 小时前
图片、文件的预览
前端·javascript
layman05286 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔6 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李6 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN6 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒6 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库6 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052476 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫