什么是保护/加密JavaScript代码的最佳方法?

6

可能重复的问题:
如何混淆JavaScript代码?

我想要“保护”我的JavaScript代码。有没有什么好的、推荐的方法,可以让它非常难以被破解?

我在网上测试了一些编码器,有时候我的JavaScript代码在编码后无法正常工作。 这是正常现象吗(因为编码器很差)……还是我的代码太糟糕/有漏洞?


4
我发誓这个问题每天都会被问到。“哦不,有人会偷我的代码!” - Marko
4个回答

8

您无法阻止任何人查看您的JavaScript代码。从这个角度来看,它与HTML基本相同。您可以使其难以破解,即混淆,但您确实无法从中获得任何好处。

如果您有应用程序关键代码,因为某种原因您感到非常重要,请设计您的Web应用程序,使“受保护”的代码在服务器上运行。使用仅在浏览器之间传递状态数据的XHR请求与前端(浏览器)进行通信。


5
并附带版权和适当的许可证进行分发。 - Swanand

3

这是不可能的,因为浏览器需要理解你的javascript代码,所以人也能理解。

为了使我们的Web应用程序更高效,我们决定压缩(YUI for JS and CSS)并将所有主要资源内联到HTML页面中(HTML、CSS和JS),一个shell脚本会在部署期间自动完成此操作。

意外的结果是,如果您查看我们应用程序的源代码,您会看到一个相当难以阅读的 ~250kb 字符串。
这不会阻止真正想获取您代码的人,但它会使许多人望而却步。


0

您可以压缩您的JavaScript代码。雅虎提供在线工具来压缩您的文件。它还支持变量替换,即将您的逻辑函数名称、变量名称替换为a、b、c等,以保护您的客户端业务逻辑。

http://refresh-sf.com/yui/


2
这并没有保护任何东西。如果你的JavaScript要在网页上工作,它的源代码必须是明显的纯粹的。对于这个问题有四个答案,但只选了一个错误的...唉... - ubiquibacon

0

你无法“保护”你的JavaScript,因为它是客户端语言,你能做的最好的事情就是在服务器端验证任何用户输入,以确保用户没有注入任何恶意代码或尝试任何形式的XSS(跨站脚本攻击)。特别重要的是要在服务器端进行验证,因为一个人可以通过FireBug将代码注入到制作不良的网站中。基本上,你需要确保在未对用户输入的字符串进行编码之前,从未将其写回。安全性不仅仅局限于编码用户字符串,但这本身就可以修复许多安全漏洞。


1
“保护”一词的意思是让代码难以被盗。 (编辑)哦不,我现在看到了“黑客”这个词。抱歉,那么你的答案是正确的。 - Herman Schaaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接