JSPM

obscure-test

0.0.3
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 2
    • Score
      100M100P100Q16766F
    • License MIT

    Package Exports

    • obscure-test
    • obscure-test/cli.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (obscure-test) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    byvue-obscure

    byvue模板项目专用的文件加密插件

    Warn

    非必要情况下请不要使用该功能,因为加密后的代码存在下述缺点;如果确实需要使用,请尽量不要修改混淆配置,过高的混淆配置会大大增加文件体积并严重降低代码运行效率。

    1. 不是绝对的安全性:JavaScript混淆是一种安全性通过增加代码复杂性来困难化逆向工程的手段,但并不能提供绝对的安全性。有经验的攻击者仍然可能通过各种手段解析和理解混淆后的代码。

    2. 性能影响:混淆后的代码会影响到JavaScript引擎的性能,即使是较为简单的加密选项也会使得性能降低20%~30%。

    3. 调试困难:由于混淆会改变代码的结构和标识符,因此在混淆后的代码上进行调试变得更加困难。这对于开发人员来说可能是一个不便之处,特别是在生产环境中出现问题时。

    4. 增加开发和维护成本:混淆增加了代码的复杂性,可能引发某些意料之外的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
    要排除的文件夹或文件名

    // 如某项目文件结构如下,加密时不需要加密public文件夹下的内容,则可在obscureConfig.json中配置"excludes": ["public"]
    byvue-test
    |-- public // 不需要进行混淆加密                
    |   |-- favicon.ico           
    |   |-- help                  
    |-- scripts                  
    |   |-- docker-entrypoint.sh  
    |-- shims-vue.d.ts         
    |-- src                     
    |   |-- App.vue              
    |   |-- api                   
    |   |-- assets                
    |   |-- components             
    

    targetCodes

    Type: array
    需要添加注释的代码,一些特殊的js代码加密后可能无法正确转义,如在vite项目中import.meta...此类语句不能进行混淆,则可在obscureConfig.json中配置"targetCodes": [ "import.meta" ],配置后"import.meta"相关代码会被编译为

    // javascript-obfuscator:disable
    import.meta...
    // javascript-obfuscator:enable

    从而跳过混淆。
    如果在实际使用中遇到了个别混淆后无法编译的代码,也可在该代码前后添加// javascript-obfuscator:disable和// javascript-obfuscator:enable跳过混淆。

    appoint

    Type: array
    指定要混淆的文件夹或文件名

    // 如某项目文件结构如下,仅需要加密src文件夹下的内容,则可在obscureConfig.json中配置"appoint": ["src"]
    byvue-test
    |-- public                 
    |   |-- favicon.ico           
    |   |-- help                  
    |-- scripts                  
    |   |-- docker-entrypoint.sh  
    |-- shims-vue.d.ts         
    |-- src // 仅需要对src目录下的内容进行混淆加密                   
    |   |-- App.vue              
    |   |-- api                   
    |   |-- assets                
    |   |-- components             
    

    obfuscationOptions

    Type: object
    javascript-obfuscator的配置项
    javascript-obfuscator官方文档