相关知识讲解链接 https://blog.csdn.net/qq_24935119/article/details/88577092
对于前端开发中的代码安全性一直是一个不可忽视的问题,前段时间公司就要求我们把我们小程序端的代码再进行混淆。看了很多网址,说的不是很明白,因此也就出了这篇文章和大家分享。
1:首先分享一下一个插件链接:https://github.com/javascript-obfuscator/javascript-obfuscator。
我用的就是这个javascript-obfuscator插件,这个插件使用教程是对单个文件进行混淆加密。
2:相对的插件工具链接:https://www.obfuscator.io/
混淆前:
混淆后:
是不是很好用,这个工具就是基于javascript-obfuscator进行混淆的。但是我们开发过程中常常并不是说把一个js进行混淆就ok了,需要把全量包的js进行混淆。
3:我使用uniapp开发的小程序,需要将编译过后的小程序代码再进行混淆,代码里包含多个js,不同的文件夹下,所以我就在想,用最简单的遍历文件的方式进行混淆代码。
4:首先需要在本机全局安装 npm install javascript-obfuscator -g
直接上代码:进入文件夹下控制台,输入 node obfuscator.js即可进行混淆代码
index.json
{ "compact": false, "controlFlowFlattening": true, "controlFlowFlatteningThreshold": 1, "numbersToExpressions": true, "simplify": true, "shuffleStringArray": true, "splitStrings": true, "stringArrayThreshold": 1 }
index.js
// 检索的相对文件夹 const relativePath = '../unpackage/dist/dev/mp-weixin' // 不需要混淆的js或文件夹 const exitFile = ['node_modules', 'index.js', 'app.js', 'common'] var fs = require('fs') var process = require('child_process'); var readDir = fs.readdirSync(relativePath); // 需要存在的js const czFile = [] var filePath = relativePath var arr = new Array() readFile(readDir, filePath) // 读取相对路径下的所有文件 function readFile(readDir, filePath) { if (readDir.length > 0) { for (var i = 0; i < readDir.length; i++) { scannerFile(readDir[i], filePath) } } } // 扫描文件进行检索出js文件进行混淆 function scannerFile(file, filePath) { console.log("file-----" + file); var readdirpath = "" if (filePath == './') { readdirpath = filePath + file } else { readdirpath = filePath + "/" + file } if (exitFile.indexOf(file) < 0) { console.log('-->Start entering FS'); fs.stat(readdirpath, (err, data) => { if (err) { console.log(err); } else { if (data.isDirectory()) { console.log('-->isDirectory:' + file); var readChildDir = fs.readdirSync(readdirpath); console.log(readChildDir); readFile(readChildDir, readdirpath) } else { console.log('-->isNotDirectory:' + file); if (file.indexOf('.js') >= 0 && file.indexOf('.json') < 0) { // 开始混淆代码 console.log('-->Start confusing code:' + file); var cmd = ' javascript-obfuscator ' + readdirpath + ' --config index.json --output ' + readdirpath; process.exec(cmd, function(error, stdout, stderr) { console.log("error:" + error); console.log("stdout:" + stdout); console.log("stderr:" + stderr); }); arr.push(readdirpath) } else { console.log('Non-folder - Non-js code :' + file); } } } }) } else { console.log('-->skip------------'); } }
使用方式:
————————————————
版权声明:本文为CSDN博主「背负你的星辰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40358970/article/details/112952264