我知道客户端代码必须可以从浏览器中读取,但我想知道(因为我忽略了太多东西)是否有办法混淆最终用户的代码,如果没有,“打包”的最佳实践是什么" javascript 代码。
9 回答
使用YUI Compressor等工具缩小 JS 是一种很好的做法。除非您有特殊需要,否则我不会混淆它。有很多在线混淆器,例如这个
看到这篇文章:http: //developer.yahoo.net/blog/archives/2007/07/high_performanc_8.html
看看这个。
除了挖掘它,我认为你不能真正隐藏 js。这一切都通过用户的浏览器进行,一旦出现,就有很多方法可以看到它。
请参阅此处获取免费的 Javascript 混淆器。
鉴于这实际上是可能的,如果您打算混淆的原因是为了保护知识产权,那么您可能正试图以错误的方式从您的工作中获取价值。逆转混淆相当容易,您可能会浪费时间维护您的代码。
更多地关注您打算为访问您网站的人提供哪些服务,以使您的网站与竞争对手区分开来
任何混淆都不会让你的代码真正安全,它可能只会给你一种安全的错觉(参见security by obscurity)。
如果您确实需要对代码的某些部分保密,请考虑将敏感部分拉入服务器端脚本并对脚本进行(例如)AJAX 调用。尤其是随着 JSON 的出现,与服务器端脚本的通信从未如此简单。
有一些工具可用于压缩 javascript 代码并使最终用户难以理解。
有没有理由为什么这对你不起作用?
不要在 javascript 中放置任何敏感或个人信息。
花时间保护服务器上的数据安全。
第 1 步:不要。
你必须做很多事情才能达到任何有意义的混淆水平。仅对名称进行混淆是不够的,因为所有标准函数仍然存在(尽管它们可能隐藏在一层较短/混淆的别名中),并且一旦代码格式良好,就很容易得出特定函数的目的再次。任何真正想知道你的 JS 代码做什么的人都可以并且愿意,无论你在他们的浏览器得到它的副本之前对它做了什么。
如果您的 JavaScript 中确实有有价值的业务流程,那么您做错了(tm)。
可以使用以下工具:
YUI Compressor - 需要 Java - 非常好的压缩器
Packer - 创建最令人困惑和最小的代码,但脚本的运行速度不如 YUI - 这可以在线使用。选择“Base62 编码”以获得最大效果。
Dojo Compressor 我从来没有使用过这个,但它在顶级列表中。它还需要Java。
JSMIN By Douglas Crockford,这个算法非常简单,但还是不错的。旨在与 JSLint 结合使用。