可能重复的问题:
如何混淆JavaScript代码?
我想要“保护”我的JavaScript代码。有没有什么好的、推荐的方法,可以让它非常难以被破解?
我在网上测试了一些编码器,有时候我的JavaScript代码在编码后无法正常工作。 这是正常现象吗(因为编码器很差)……还是我的代码太糟糕/有漏洞?
可能重复的问题:
如何混淆JavaScript代码?
我想要“保护”我的JavaScript代码。有没有什么好的、推荐的方法,可以让它非常难以被破解?
我在网上测试了一些编码器,有时候我的JavaScript代码在编码后无法正常工作。 这是正常现象吗(因为编码器很差)……还是我的代码太糟糕/有漏洞?
您无法阻止任何人查看您的JavaScript代码。从这个角度来看,它与HTML基本相同。您可以使其难以破解,即混淆,但您确实无法从中获得任何好处。
如果您有应用程序关键代码,因为某种原因您感到非常重要,请设计您的Web应用程序,使“受保护”的代码在服务器上运行。使用仅在浏览器之间传递状态数据的XHR请求与前端(浏览器)进行通信。
这是不可能的,因为浏览器需要理解你的javascript代码,所以人也能理解。
为了使我们的Web应用程序更高效,我们决定压缩(YUI for JS and CSS)并将所有主要资源内联到HTML页面中(HTML、CSS和JS),一个shell脚本会在部署期间自动完成此操作。
意外的结果是,如果您查看我们应用程序的源代码,您会看到一个相当难以阅读的 ~250kb 字符串。
这不会阻止真正想获取您代码的人,但它会使许多人望而却步。
您可以压缩您的JavaScript代码。雅虎提供在线工具来压缩您的文件。它还支持变量替换,即将您的逻辑函数名称、变量名称替换为a、b、c等,以保护您的客户端业务逻辑。
你无法“保护”你的JavaScript,因为它是客户端语言,你能做的最好的事情就是在服务器端验证任何用户输入,以确保用户没有注入任何恶意代码或尝试任何形式的XSS(跨站脚本攻击)。特别重要的是要在服务器端进行验证,因为一个人可以通过FireBug将代码注入到制作不良的网站中。基本上,你需要确保在未对用户输入的字符串进行编码之前,从未将其写回。安全性不仅仅局限于编码用户字符串,但这本身就可以修复许多安全漏洞。