我如何模糊或使我的JavaScript文件无法读取?

我的应用程序中包含JavaScript脚本,包含JavaScript和jQuery函数。 所有用户与我的应用程序的交互都是动态的,它通过jQuery传递给应用程序。

我意识到,当我在客户端运行我的应用程序时,客户端可以通过查看页面源( Ctrl + U )来查看我的所有源代码。

如何隐藏或执行某些操作以便用户无法理解或阅读源代码?

我想做像Facebook那样的事情。 通过查看Facebook源用户无法重用其源代码甚至无法理解它。

我用Google搜索并发现这个过程称为混淆,但这对我不起作用。

我试过这个:

http://www.javascriptobfuscator.com/default.aspx

http://dean.edwards.name/packer/

http://www.daftlogic.com/projects-online-javascript-obfuscator.htm

即使我试过http://www.jasob.com/

但这对我没用。

如果有人真的关心你的代码,他将采取不缩小的工作量(用有用的变量/函数名替换随机)。 “加密”或包装等其他任何东西都只是蛇油,因为它可以很容易地恢复。 因此,为自己节省一些工作,而不是花费在改善应用程序上。

所以:你应该在生产系统上做的唯一事情就是缩小你的JS代码。 这使它更小,因此加载更快 – 所以它实际上是一个优势。 除此之外,对于那些只是对快速看起来好奇但却不想花时间的人来说,它会降低其可读性。

例如,facebook JS文件只是缩小了 – 很可能只是出于带宽/性能原因。


缩小JavaScript的最简单方法是使用Google的Web服务: http : //closure-compiler.appspot.com/home
请注意,它有1MB的限制,所以如果你的JS很大,你可能需要下载基于Java的minifier来在本地运行它。

ThiefMaster说的一切都是真的。 值得注意的是,您的应用程序的设计应假设用户可以查看和操作客户端上的所有内容。 如果您担心混淆,因为您认为它会阻止用户查看敏感数据或操纵价格等信息,那么您需要重新设计应用程序,以便安全逻辑驻留在服务器上。

因为我需要缩小我的javascript源代码,我正在寻找一个javascript程序,它自己缩小任何javascript代码。

为什么一个javascript minifier? 因为,我正在从Web服务器向客户端编写一些随机的javascript代码。

我应该在Web服务器上使用“node.js”来执行一个javascript程序,它生成一个javascript代码并在运行中将其缩小并发送给客户端。

这个javascript程序是一个:加密和解密程序。 客户端的javascript代码结果应包含一个javascript函数,该函数解密加密数据的json或hex版本的每个部分。 该函数执行整数的加,减和乘法。 有时,我可以生成一个条件(if,then和else)来计算两个不同的操作。 此函数用于解密两个或多个参数输入。

这是随机函数:每次客户端请求一些私有数据时,Web服务器都会生成两个不同的javascript函数:一个用于加密,另一个用于解密。 解密function被发送到客户端。 Web服务器使用加密函数来加密私有数据并将其发送到客户端。 这对于混淆是有意义的:每次进程运行时,每次发送function都完全不同。

并且,为了说服加密/解密非常安全,我为客户端添加了两个或更多参数的表格值转换; 但是,表格值实际上是由仅为Web服务器编写的函数生成的,并且包含一些数字常量,这些常量永远不会发送到客户端。 因此,任何想要解密的人都必须具有常量值。

我解释了这个过程,因为:

  1. 你在javascript源代码中采取了一些关于混淆的事情; 但是,网络服务器和浏览器尚未实现javascript中的混淆……也许,它可能会发生……但是,借助“SSL-ize”在互联网上进行的所有传输,哪种解决方案是有用的。

  2. 可以使用可读的加密/解密函数进行加密和解密。 而且,没有SSL证书的成本。 甚至,“中间人”会解密加密数据; 为此,他只需要执行javascript函数。 好吧..但是想象一下javascript解密函数也被加密……然后,“中间人”必须执行解密function,然后再解密解密的内容,这些内容是javascript函数,用于解密加密数据。

并且,想象一下,如果Web服务器向客户端提出问题,并且唯一的答案由客户端的结果计算(其未通过Internet发送)处理……那么“中间人”无法得到答案。

看看我的想法; 我在等待任何人的评论。