是否可以在运行中压缩和混淆Javascript代码


Is it possible to compress and obfuscate Javascript code on the fly?

我偶然发现了这个很棒的在线工具。它有压缩和模糊JS的选项。我想知道是否有可能在现场即时做到这一点。我知道这会稍微减慢客户的速度,但就我而言,这是可以接受的。我更关心我使用的专有代码。

我主要使用PHP和jQuery。

您在谈论在客户端执行此操作吗?这完全违背了目的。将未被混淆的、未压缩的代码发送到客户端会破坏这个过程的两个重要元素:

  • 发送压缩文件可节省带宽/时间
  • 模糊处理可以帮助您更难对代码进行反向工程(但不会以任何方式使其变得不可能)

短篇小说:在服务器端完成。

您可以使用基于雅虎YUI压缩器的minimy。

它结合了多个CSS或Javascript文件,删除不必要的空白和评论,并为他们提供gzip编码与优化客户端缓存标头。

要获得模糊处理,可以设置nomunge => false

Minify可以动态压缩和缩小(但不能模糊)。它将缓存结果,直到文件发生更改。也许还有一种方法可以混淆。

如果您关心保护专有代码,我会将您拥有的任何专有操作转移到服务器端(正如@DA所指出的)。任何人都可以通过js美化程序运行你的js,并获得可读代码,无论它有多模糊。

JS混淆/压缩最好用于使JS更小,以便在客户端加载页面时消耗更少的带宽。当你试图通过重命名恶意脚本试图利用的变量来阻止在你的网站上传播的xss攻击时,你的建议可能很有用,但除此之外,我看不出对每个请求实施重新模糊处理的任何理由或好处。

如果您担心不想让其他人看到的专有代码,那么就不要使用JavaScript或任何客户端语言。JS混淆不是安全。。。只是一个出售混淆软件的骗局。

至于压缩,是的,您可以在服务器端进行压缩。如前所述,YUI压缩机是一个不错的选择。