用webpack打包加密静态配置文件
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
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, 即 Pkcs5return encrypted; }module.exports = {plugins: [new CopyWebpackPlugin([{from: './jsons',to: 'jsons',transform (content, path) {return encrypt(content, path)}}])] }
这样就把json文件中的配置加密了,
{"id": 1,"layer_name": "水利" }// 加密后成这样了
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; }
至此,配置文件打包加密就操作完毕了!
转载于:https://www.cnblogs.com/zhang90030/p/8532876.html
用webpack打包加密静态配置文件相关推荐
- Webpack打包-打包详细流程
Webpack Webpack是一个现代化的静态模块打包器,支持JavaScript.CSS.图片等资源的打包.它将所有模块及其依赖项视为静态资源,并创建一个依赖关系图,将这些资源转换为有效的输出文 ...
- webpack打包缓存_【第835期】Webpack 的静态资源持久缓存
原标题:[第835期]Webpack 的静态资源持久缓存 前言 你现在还在休假吗?早读课节前以web pack漫谈结尾,今年就以web pack开始吧.今日早读文章由众成翻译@yanni4night带 ...
- 16.如何做到webpack打包vue项目后,可以修改配置文件
问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api ...
- webpack打包VUE项目读取外部配置文件,灵活配置域名
参考方案一 作为一个兼职前端和运维的java程序员,今天我司测试人员提出了一个需求,当后台服务地址ip地址改变后,webpack打包的VUE项目得更改地址重新打包,太麻烦了,最好可以读取外部配置文件的 ...
- vue-cl 有一些静态资源不想经过webpack打包那么应该public 下面
vue-cl3脚手架生成的项目,静态资源要是不想经过webpack打包,那么应该放置在public 文件夹下面,而不是以前的static文件夹下面.先说说vue-cl3 静态资源可以通过两种方式进行处 ...
- webpack打包配置
在网页中会引用那些常见的静态资源? js .js .jsx .coffee .ts(Typescript 类 C#语言) css .css .less .sass .scss images .jpg ...
- webpack打包生成的map文件_一站式搞明白webpack中的代码分割
上次分析到通过devtool的配置项来设置source map,在线上环境可以通过设置成cheap-module-source-map来生成单独的map文件,但是map文件在线上环境会不会每次都加载呢 ...
- 看看webpack打包优化
webpack 打包策略,主要有下列几种方法. 1.CDN2.DllPlugin3.splitChunks4.happypack 下面详细介绍使用的流程. CDN 通常使用的第三方模块很大时,但是又想 ...
- vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
Vue脚手架提供了一个命令npm run build进行打包项目,在package.json中有一个build属性,对应执行命令node build/build.js.执行成功后,项目目录下多了一个d ...
- 前端工程化(ES6模块化和webpack打包)
文章目录 目标: 目录: 1.模块化相关规范 1.1.模块化概述 1.2.浏览器端模块化规范 AMD CMD 1.3.服务器端模块化规范 CommonJS 1.4.大一统的模块化规范-ES6模块化 1 ...
最新文章
- Delphi 2010 新增功能之: IOUtils 单元(4): TDirectory.GetDirectories
- 编写python程序一年365天_编写第一个Python程序
- 在 C++ 中实现一个轻量的标记清除 gc 系统
- ssm实现发送邮件功能
- linux下载文件一直超时,Linux下connect超时处理(总结)
- Hibernate的常用API
- mysql 安装只有一半_记一次MySQL安装出现的坑爹问题。。。
- TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记
- pl/sql中文显示为乱码解决
- 张善友: .NET社区运营 | 2021 中国开发者生态峰会
- JavaScript(DOM编程一)
- Asp.NET Demo
- java批量查询导致堆内存不足,带有嵌套聚合的Elasticsearch查询导致内存不足
- jgGrid pivot reload重新加载及刷新数据
- LOJ2482 CEOI2017 Mousetrap 二分答案、树形DP
- CorelDRAW入门教程-用CDR制作漂亮小雨伞
- PDF不小心删掉了怎么恢复?4个方法隔壁家老王已经恢复了
- LIO-SLAM分析
- Win10正式版Guest来宾账户开启使用方法
- 计算机无法删除ie,ie无法删除怎么办