【问题标题】:difference between uglify and obfuscate? Is one more safe?丑化和混淆的区别?更安全吗?
【发布时间】:2014-03-31 00:00:19
【问题描述】:

最近有人要求我混淆我的 javascript 以隐藏客户端的 api 密钥。我正在使用 grunt。

grunt-contrib-uglify 会混淆我的 js 吗?

uglify 和 obfuscate 有什么区别?一个比另一个更安全吗?

【问题讨论】:

  • 我想你会发现这两种方法都会暴露 API 密钥,尽管稍微难以辨别。
  • Uglify 缩小,但它不会关闭编译和替换变量名,也不会混淆。此外,混淆不会提高安全性。
  • 我会说,一般来说,混淆确实至少会提高一点安全性,因为拥有攻击软件技能的人越来越少,或者人们需要花费更多时间来攻击软件。我同意在某些特殊情况下,例如搜索某个字符串的存在,混淆可能没有任何区别。而且我不会声称无法通过努力来扭转混淆。但是,例如,如果您的目标是让人们更难理解或修改算法,那么我认为混淆确实“提高了安全性”。

标签: javascript gruntjs obfuscation uglifyjs deobfuscation


【解决方案1】:

Uglify 是一个代码压缩工具。它解析 JS,从代码中构建一个令牌树,然后可以使用它来压缩/缩小代码或“美化”它,使其易于调试等。 Uglify 不会混淆您的代码。

另一方面,使用Stephen Mathieson's Obfuscator 之类的混淆工具可以将多个项目文件连接成一个,捆绑需求和打包。在这种情况下,它还会在最后对整个作业进行 Uglizes,从而生成一个混淆的、缩小的 JS 文件。它不是 100% 安全的,有一些方法可以对 JS 代码进行去混淆处理,但它比纯文本更难破译。

但是,我建议尽可能将客户端的 API 密钥保留在浏览器端代码之外。就算混淆了也能找到

【讨论】:

  • 只想指出,据我所知,Stephen Mathieson 的混淆器实际上使用 UglifyJS 作为其混淆代码的方法。
  • @antfx 感谢您的提醒,我假设它还有更多内容,而 Uglify 只是其中的一个层
  • 我这几天一直在玩 js-obfuscator,似乎在混淆方面做得很好,而不仅仅是丑化npmjs.com/package/js-obfuscator
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
相关资源
最近更新 更多