@byvue/obscure
v0.0.1
Published
byvue模板项目专用的文件加密插件
Downloads
1
Readme
byvue-obscure
byvue模板项目专用的文件加密插件
Warn
非必要情况下请不要使用该功能,因为加密后的代码存在下述缺点;如果确实需要使用,建议通过配置appoint
属性指定混淆范围,且尽量不要修改混淆配置,过大的混淆范围和过高的混淆配置会大大增加文件体积并严重降低代码运行效率。
不是绝对的安全性:JavaScript混淆是一种安全性通过增加代码复杂性来困难化逆向工程的手段,但并不能提供绝对的安全性。有经验的攻击者仍然可能通过各种手段解析和理解混淆后的代码。
性能影响:混淆后的代码会影响到JavaScript引擎的性能,即使是较为简单的加密选项也会使得性能降低20%~30%。
调试困难:由于混淆会改变代码的结构和标识符,因此在混淆后的代码上进行调试变得更加困难。这对于开发人员来说可能是一个不便之处,特别是在生产环境中出现问题时。
增加开发和维护成本:混淆增加了代码的复杂性,可能引发某些意料之外的bug,使得开发和维护代码变得更为困难。
Install
npm i byvue-obscure
Usage
// 生成obscureConfig.json配置文件
npx obscure init
// 运行加密程序
npx obscure run
obscureConfig options
destDir
Type: string
混淆后输出的文件夹名,默认为{ 目标文件夹名称 }-obscure
// 例如当前项目名为 byvue-test
// 运行后则会在项目同级目录下新增byvue-test-obscure文件夹用于存放混淆加密后的文件
fileExtensions
Type: array
需要混淆的文件扩展名,目前仅支持.js
和.vue
文件的混淆加密
excludes
Type: array
要排除的文件夹或文件名
// 如obscureConfig.json中配置"excludes": ["src/assets", "components", "api.js"],匹配到的文件既不会进行混淆,也不会进行复制,一般用于"node_modules"、".git"等文件的处理。
byvue-test
|-- public
| |-- favicon.ico
| |-- help
| |-- api.js
| |-- components // 该文件夹下的内容会被跳过,因为符合excludes中的"components"规则
| | |--text.vue
| | |--text2.vue
| | |--text3.vue
|-- scripts
| |-- docker-entrypoint.sh
|-- shims-vue.d.ts
|-- src // 仅需要对src目录下的内容进行混淆加密
| |-- App.vue
| |-- api.js // 该文件会被跳过,因为符合excludes中的"api.js"规则
| |-- assets // 该文件夹下的内容会被跳过,因为符合excludes中的"src/assets"规则
| | |--index.vue
| | |--index2.vue
| | |--index3.vue
| |-- components // 该文件夹下的内容会被跳过,因为符合excludes中的"components"规则
| | |--text.vue
| | |--text2.vue
| | |--text3.vue
targetCodes
Type: array
需要批量添加注释的代码,一些特殊的js代码加密后可能无法正确转义,如在vite项目中import.meta...此类语句常用且不能进行混淆,则可在obscureConfig.json中配置"targetCodes": [ "import.meta" ],配置后"import.meta"相关代码会被编译为
// javascript-obfuscator:disable
import.meta...
// javascript-obfuscator:enable
从而跳过混淆。 如果在实际使用中遇到了个别混淆后无法编译的代码,但是又不需要配置在targetCodes中进行批量处理,则可自行在目标代码前后添加// javascript-obfuscator:disable和// javascript-obfuscator:enable实现跳过混淆。
appoint
Type: array
如果仅想要对部分文件夹或者文件进行混淆处理,则可在obscureConfig.json中配置"appoint"指定要混淆的文件夹或文件名。支持文件夹路径,文件夹名,文件名的匹配。
// 如obscureConfig.json中配置"appoint": ["src/assets", "components", "api.js"]
byvue-test
|-- public
| |-- favicon.ico
| |-- help
| |-- api.js
| |-- components // 该文件夹下的内容会被混淆,因为符合appoint中的"components"规则
| | |--text.vue
| | |--text2.vue
| | |--text3.vue
|-- scripts
| |-- docker-entrypoint.sh
|-- shims-vue.d.ts
|-- src // 仅需要对src目录下的内容进行混淆加密
| |-- App.vue
| |-- api.js // 该文件会被混淆,因为符合appoint中的"api.js"规则
| |-- assets // 该文件夹下的内容会被混淆,因为符合appoint中的"src/assets"规则
| | |--index.vue
| | |--index2.vue
| | |--index3.vue
| |-- components // 该文件夹下的内容会被混淆,因为符合appoint中的"components"规则
| | |--text.vue
| | |--text2.vue
| | |--text3.vue
obfuscationOptions
Type: object
javascript-obfuscator的配置项
javascript-obfuscator官方文档