用webpack打包加密静态配置文件
2018-03-09 11:24
585 查看
webpack处理静态文件,如json、xml等配置文件,可以采用 copy-webpack-plugin 插件直接复制到打包后的文件夹下,但如果想采用一些手段隐藏一下这些配置文件的内容怎么办呢?
虽然对于前端来说,你的代码没有什么隐蔽性可言,但加密处理一下还是可以防止简单盗用的。
我采用的方法是利用 copy-webpack-plugin 中的 transform方法,以及CryptpJS加密库。
参考文档:
https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/ https://github.com/webpack-contrib/copy-webpack-plugin
这样就把json文件中的配置加密了,
AnTOaTIXcdgaZ2R1dmkt/r6mQHZh4/Ufgq9/PVt17q3BuKhPe5qn2tQ/9bDcIB10
至此,配置文件打包加密就操作完毕了!
虽然对于前端来说,你的代码没有什么隐蔽性可言,但加密处理一下还是可以防止简单盗用的。
我采用的方法是利用 copy-webpack-plugin 中的 transform方法,以及CryptpJS加密库。
参考文档:
https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/ https://github.com/webpack-contrib/copy-webpack-plugin
1、copy-webpack-plugin插件
查看copy-webpack-plugin的使用文档可以发现,参数中除了to和from参数外,还有一个transform参数,可以传入一个Function,第一个参数是文件内容,第二个参数文件路径2、transform方法中加密
直接贴在webpack中的代码:var CopyWebpackPlugin = require('copy-webpack-plugin'); var CryptoJS = require("crypto-js"); /** * 对数据进行加密 * @param {String} content 加密 */ function encrypt(content, path) { var str = content.toString(); // 密钥 16 位 var key = '0123456789abcdef'; // 初始向量 initial vector 16 位 var iv = '0123456789abcdef'; // key 和 iv 可以一致 key = CryptoJS.enc.Utf8.parse(key); iv = CryptoJS.enc.Utf8.parse(iv); var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); // 转换为字符串 encrypted = encrypted.toString(); // mode 支持 CBC、CFB、CTR、ECB、OFB, 默认 CBC // padding 支持 Pkcs7、AnsiX923、Iso10126 // 、NoPadding、ZeroPadding, 默认 Pkcs7, 即 Pkcs5 return encrypted; } module.exports = { plugins: [ new CopyWebpackPlugin([ { from: './jsons', to: 'jsons', transform (content, path) { return encrypt(content, path) } } ]) ] }
这样就把json文件中的配置加密了,
{ "id": 1, "layer_name": "水利" } // 加密后成这样了
AnTOaTIXcdgaZ2R1dmkt/r6mQHZh4/Ufgq9/PVt17q3BuKhPe5qn2tQ/9bDcIB10
3、解析
加密了之后,在浏览器运行时,还是得把从服务器down下来的加密文件解密,才能使用,可以根据自己的情况截获加密文件的请求,然后对其进行解密操作function decrypt(content) { var key = '0123456789abcdef'; var iv = '0123456789abcdef'; key = Crypto.enc.Utf8.parse(key); iv = Crypto.enc.Utf8.parse(iv); // DES 解密 var decrypted = Crypto.AES.decrypt(content, key, { iv: iv, mode: Crypto.mode.CBC, padding: Crypto.pad.Pkcs7 }); // 转换为 utf8 字符串 decrypted = Crypto.enc.Utf8.stringify(decrypted); return decrypted; }
至此,配置文件打包加密就操作完毕了!
相关文章推荐
- Vue工程模板文件 webpack打包配置方法
- webpack项目调试以及独立打包配置文件的方法
- webpack多入口文件页面打包配置
- webpack多入口文件页面打包配置详解
- webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源
- webpack--指南1--打包文件配置
- (一)webpack配置loader,打包js和sass以及图片文件
- webpack配置:css文件打包、JS压缩打包和HTML文件发布
- 浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
- webpack1-打包js,并建立第一个配置文件
- 在vue中用webpack打包之后运行文件问题以及相关配置
- 16.如何做到webpack打包vue项目后,可以修改配置文件
- webpack+vue打包之后输出配置文件修改接口文件
- 七:webpack.config.js文件的高级配置
- webpack打包,配置路径
- Webpack优化配置缩小文件搜索范围
- 【webpack打包成功,但是在dist文件js里没有出现相对应的文件 】问题解决
- webpack打包并将文件加载到指定的位置
- ASP.NET 2.0加密Web.config 配置文件
- Vue项目使用webpack打包时纯静态资源的处理