webpack 通过自动更改所有函数和变量名,使生产环境中的react代码变得模糊不清

d5vmydt9  于 2024-01-08  发布在  Webpack
关注(0)|答案(6)|浏览(247)

是否有任何库可以帮助混淆react构建的生产环境?
类似于:

  1. const MyComp = () = > {
  2. const {propa, propb} = useMyfunc()
  3. return(...)
  4. }

字符串

  1. const xyz = () = > {
  2. const {yxz, zyx} = zzz()
  3. return(...)
  4. }

ewm0tg9j

ewm0tg9j1#

正确的选择将是Terser。它是可用的沿着与webpack太(terser-webpack-plugin)为ES6+
uglify-es不再维护,uglify-js不支持ES6+。
您可以参考本文中不同包的基准测试。

pexxcrt2

pexxcrt22#

this library是你要找的吗?

nbewdwxp

nbewdwxp3#

如前所述,Terser是一个很好的选择。
React使用某种形式的UglifyJS来缩小构建时的代码,但为了混淆变量和函数名,我做了以下操作:

说明:

1° -安装Terser
第一个月
2° -修改package.json:

  1. "terser": "terser ./build/static/js/*.js -c -m --mangle-props regex=/_$/",
  2. "build": "react-scripts build && npm run terser"

字符串
这似乎对我很有效,希望对你也一样!

展开查看全部
uplii1fm

uplii1fm4#

你有没有试过this包?这是一个非常专业的包,用于混淆js代码,转换你的代码:

  1. const MyComp = () = > {
  2. const {propa, propb} = useMyfunc()
  3. return(...)
  4. }

字符串
对此:

  1. const MyComp=()=>{const {propa:_0xa95d6e,propb:_0xfaabf6}=useMyfunc();return _0xa95d6e+_0xfaabf6;};

gev0vcfq

gev0vcfq5#

UglifyJS有选项来mangle(obscurify)名称:

输入示例:

  1. const MyComp = function() {
  2. const {propa, propb} = useMyfunc()
  3. return(1)
  4. }

字符串

输出示例:

  1. const n=function(){const{propa:n,propb:o}=useMyfunc();return 1};


自己试试:https://www.uglifyjs.net/
除非包含函数定义,否则useMyfunc不能被mangled(否则函数调用将失败)。类似地,mangled顶级全局变量(如MyComp)可能会破坏使用该组件的任何内容。
如果在mangling之前将所有React代码捆绑到一个文件中,它应该可以工作,因为所有引用都将被mangled为正确匹配的名称。
React已经使用了像UglifyJS这样的minifier,所以你可以只修改一些配置文件。注意source maps will undermine any mangling, so they should be disabled。(我认为React对更小的JS文件更感兴趣,而不是隐藏代码。)

展开查看全部
0qx6xfy6

0qx6xfy66#

react-obfuscate

有一个npm仓库负责react代码混淆。下面是相同的链接-https://www.npmjs.com/package/react-obfuscate
基本步骤都写在repo文档中。

Jscrambler

另一个我觉得有趣的工具是Jscrambler。
https://blog.jscrambler.com/protecting-your-react-js-source-code-with-jscrambler/

相关问题