混淆 Angular JS 控制器代码的最佳解决方案是什么

What is the best solution to obfuscate Angular JS controller code

我想混淆 + 缩小我的 Angular JS 代码,以防止它 public 如果有人试图解码它,那就让它成为一个障碍。代码 运行 在服务器上。

注意:将来我们计划将 http 转移到 https

我见过很多选项,例如 Gulp、Google Closure Compiler、UglifyJS 等,还有许多用户可以下载和混淆的工具jsob、javascript obfuscate 等代码

我需要一个建议并且有几个问题。

  1. 除了加密还有什么更好的方法?
  2. 如果我切换到 https,我还需要混淆吗?
  3. 有哪些更好、更简单的方法,各有利弊?
  4. 如果我使用 JavaScript 混淆之类的工具,那么它的优缺点是什么?我能取回它吗,我是说解码?
  5. 或者如果有人能够查看 gulp 文件,是否可以轻松获取我的代码?

1 - 这实际上取决于您要实现的目标。如果你真的想保护你的代码来隐藏你的业务逻辑,你应该寻求一个有弹性的解决方案,而不是依赖于一个太容易被击败的缩小或混淆工具本身。

2 - Https 只是意味着您的浏览器和网站之间的通信是加密的。 https也可以解密,所以应用其他保护机制是有意义的

4 - JavaScript 混淆器和其他几种工具不保护代码,它们是简单的混淆器,因此可以在几分钟内轻松逆转,这就是为什么有些人认为不值得保护 client-side。事实上,您可以使用简单的 JS 优化器获得大部分原始代码。 ClosureCompiler 和 UglifyJS 正是这种不同的方法,他们减少代码的大小并优化它,他们不提供代码保护。

3、5 - 我找到了 this blog post from js13kGames competition creator quite useful for my case. He suggests a solution that seems to be more appropriate - Jscrambler。在我看来,您应该尝试一下,因为它将代码转换与 anti-debugging 和 anti-tampering 功能结合在一起。例如,您还可以将代码锁定到预定义的域列表或设置到期日期以提供可过期的演示。也许它也适合您的情况,因为它支持 Angular.

我使用 gulp-uglify 找到了一个不错的解决方案。 如果您使用隐式注释,请首先使用 gulp-ng-annotate 以免在 uglify 过程中丢失服务名称。