0

我现在正在测试一种隐藏 javascript 的方法,以便用户无法在源文件中四处搜索它。

方法是这样的:

  1. 您包含了一堆 javascript 文件来使您的应用程序正常工作。jQuery、dojo 等库和您自己的代码。这是相当标准的。

  2. 有一段关键的 javascript 代码,没有它,应用程序将无法运行,任何好奇的用户也无法在没有它的情况下做出应用程序的正面或反面。这个关键部分不会被脚本标签加载。相反,一个不显眼的小脚本调用数据库并以一个大长字符串返回 javascript。

  3. 这个字符串得到 eval()-ed 以使其成为实时代码。但是代码是动态生成的,所以如果用户正在查看源代码或保存网站,它不会显示出来。此外,您可以添加某种盐或时间戳,以防止用户试图欺骗数据库泄露您的 javascript 内核。

我正在尝试从社区获得对此的反馈,而我为使用服务器端代码隐藏 javascript 而出现的大多数示例只是人们希望在标签中包含 .php 文件而不是 .js . 这是完全不同的。

所以你有它。这是一个好主意吗?弱点是什么?

4

2 回答 2

3

eval()通常不受欢迎,但无论如何,最大的弱点是我可以简单地嗅探 HTTP 请求并获取您的脚本。混淆可以使这更加不方便,但是使用好的调试器并不难跟踪堆栈跟踪并很好地了解正在发生的事情。

即使资源是通过 SSL 传输的,一旦被浏览器加载,它也可以被仔细阅读/操作。为了测试这一点,我访问了一个安全网站,并使用SmartSniff检查了原始 TCP 响应(使用 XML HTTP 的同步和异步)。正如预期的那样,它是加密的且不可读的。但是,相同的请求在 Chrome 的网络活动检查器中都以纯文本形式显示。

于 2012-09-25T22:29:43.253 回答
2

使人类无法阅读 Javascript 代码(甚至对逆向工程具有很强的抵抗力)是微不足道的——而且您不需要将其隐藏在其他代码中。但为什么?通常,这种代码的名称是恶意软件。

于 2012-09-25T22:30:03.893 回答