vite3+vue3 实现前端部署加密混淆 javascript-obfuscator

简介: 【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。

以下是在 Vite 3 + Vue 3 项目中使用javascript-obfuscator实现前端部署加密混淆的详细步骤:

1. 安装javascript-obfuscator


在你的项目根目录下(也就是包含package.json文件的目录),通过命令行运行以下命令来安装javascript-obfuscator


npm install --save-dev javascript-obfuscator


或者如果使用yarn作为包管理工具:


yarn add --dev javascript-obfuscator

2. 创建混淆脚本文件


在项目根目录下创建一个新的 JavaScript 文件,例如命名为obfuscate.js,这个文件将用于配置和执行代码混淆操作。以下是一个简单的示例代码内容:


const JavaScriptObfuscator = require('javascript-obfuscator');
const fs = require('fs');
const path = require('path');
// 获取要混淆的输入文件路径,这里假设是构建后的js文件,可根据实际情况调整
const inputFile = path.join(__dirname, 'dist/assets/index.js');
// 定义混淆后的输出文件路径
const outputFile = path.join(__dirname, 'dist/assets/index-obfuscated.js');
// 读取输入文件的内容
const inputCode = fs.readFileSync(inputFile, 'utf8');
// 配置混淆选项,可根据需求进行调整
const options = {
    compact: true,
    controlFlowFlattening: true,
    deadCodeInjection: true,
    // 其他更多的配置选项可以在这里添加,例如混淆变量名、字符串加密等
};
// 执行混淆操作
const obfuscatedCode = JavaScriptObfuscator.obfuscate(inputCode, options);
// 将混淆后的代码写入输出文件
fs.writeFileSync(outputFile, obfuscatedCode.getObfuscatedCode());


在上述代码中:


  • 首先引入了javascript-obfuscator以及 Node.js 的文件系统模块fs和路径模块path
  • 然后指定了要混淆的输入文件路径(这里假设是 Vite 构建后生成在dist/assets/目录下的index.js文件,你需要根据自己项目实际构建输出的位置和文件名来调整)和混淆后的输出文件路径。
  • 接着读取输入文件的内容,配置了一些基本的混淆选项(像压缩代码、控制流扁平化、死代码注入等,还有很多其他可用的配置选项可按需添加,例如identifierNamesGenerator用于控制变量名的混淆生成规则等)。
  • 最后执行混淆操作并将混淆后的代码写入到输出文件中。

3. 修改package.json文件中的脚本命令


打开项目的package.json文件,在scripts部分添加一个用于执行混淆操作的命令,例如:


{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "obfuscate": "node obfuscate.js"
  }
}


这里添加了"obfuscate": "node obfuscate.js",意味着之后可以通过命令行运行npm run obfuscate或者yarn obfuscate来执行前面创建的混淆脚本。

4. 构建项目并执行混淆


首先,按照正常的流程使用 Vite 构建你的 Vue 3 项目,通过命令行运行:


npm run build


或者


yarn build


这一步会生成项目的构建输出文件,通常在dist目录下。


然后,再运行前面添加的混淆脚本命令:


npm run obfuscate


或者


yarn obfuscate


这样就会对构建后的 JavaScript 文件进行混淆处理,并生成混淆后的文件(按照obfuscate.js脚本中定义的输出路径)。

5. 在 HTML 文件中引用混淆后的文件(如果需要)


如果你的项目是通过 HTML 文件直接引用 JavaScript 文件的,那么需要把原来引用构建后原始js文件的地方替换为引用混淆后的文件(也就是前面定义的index-obfuscated.js这类文件)。


例如,原本在 HTML 中有这样的引用:


<script src="/assets/index.js"></script>


需要修改为:


<script src="/assets/index-obfuscated.js"></script>


不过要注意的是,虽然代码混淆可以在一定程度上增加代码解读的难度,但它并不能完全保证代码的绝对安全,对于有高安全需求的项目,还需要综合运用多种安全防护措施。


此外,javascript-obfuscator的配置选项众多,你可以深入研究并根据项目的具体需求进行更精细的配置,以达到更好的混淆效果。

相关文章
|
9月前
|
JavaScript 前端开发 编译器
Vue 3 深度解析:现代前端开发的革新引擎
Vue 3 深度解析:现代前端开发的革新引擎
326 6
|
7月前
|
JavaScript 前端开发 API
Vue 3:下一代前端框架革新
Vue 3:下一代前端框架革新
559 106
|
7月前
|
JavaScript 前端开发 编译器
Vue 3:下一代前端框架的革新
Vue 3:下一代前端框架的革新
482 103
|
7月前
|
JavaScript 前端开发 API
Vue 3:下一代前端框架的革命
Vue 3:下一代前端框架的革命
472 104
|
7月前
|
JavaScript 前端开发 API
Vue 3:下一代前端框架的革命
Vue 3:下一代前端框架的革命
342 102
|
7月前
|
JavaScript 前端开发 算法
Vue 3:下一代前端框架的革命性进化
Vue 3:下一代前端框架的革命性进化
490 103
|
7月前
|
JavaScript 前端开发 编译器
Vue 3:现代前端开发的新范式
Vue 3:现代前端开发的新范式
343 104
|
7月前
|
JavaScript 前端开发 编译器
Vue 3:下一代前端框架革新
Vue 3:下一代前端框架革新
356 104
|
8月前
|
JavaScript 前端开发 API
Vue 3:现代前端开发的革新之作
Vue 3:现代前端开发的革新之作

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1025
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    434
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    342
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    327
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    438
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    618
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    868
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    230
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    714
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    404
  • 下一篇
    开通oss服务