Php 如何防止javascript代码被盗?

Php 如何防止javascript代码被盗?,php,javascript,Php,Javascript,实际上,我正在开发一个Chrome扩展和一个jQuery插件来上传它并在Codecanyon上销售。当我“检查页面的源代码”并单击“资源”选项卡时,javascript文件看起来是空的。你是怎么做到的?我想在我自己的网站上也有文件盗窃预防,但我不知道怎么做。我知道php和javascript,但没有方法来执行,因为浏览器会下载文件来执行它 你可以看到这个例子。如果你看到它是空的,这意味着它是空的。无法对必须执行代码的客户端隐藏javascript代码。您只能尝试降低代码的可读性(通过缩小和模糊处

实际上,我正在开发一个Chrome扩展和一个jQuery插件来上传它并在Codecanyon上销售。当我“检查页面的源代码”并单击“资源”选项卡时,javascript文件看起来是空的。你是怎么做到的?我想在我自己的网站上也有文件盗窃预防,但我不知道怎么做。我知道php和javascript,但没有方法来执行,因为浏览器会下载文件来执行它


你可以看到这个例子。

如果你看到它是空的,这意味着它是空的。无法对必须执行代码的客户端隐藏javascript代码。

您只能尝试降低代码的可读性(通过缩小和模糊处理),但代码仍在传输中,可以进行反向工程


示例中的实际代码与jquery.js文件一起下载。

您不能隐藏它,因为您的浏览器需要它来执行它。就这么简单

您需要了解它是在客户端执行的脚本。它没有被编译(这意味着它不是二进制(0和1机器语言))。因此,它是可自由阅读的

然而,您可以使用诸如

基本上,这类工具删除了额外的空格、制表符、行返回和重命名方法(比如方法“a”代表“myshinymethodhomakesnicestuff”)和变量。这使得阅读和理解代码变得非常困难。因此,逆向工程更难实现

有些人使用一些技巧,如base64或其他编码和解码部分代码的函数,但这只是技巧,不会愚弄敏锐的眼睛

通过模糊处理,您会让人们花费更多的时间分析您的代码,因此,窃取要复杂得多,而且需要时间。假设您制作了一个很好的javascript插件,使每个白色背景都变成紫色(好吧,不是很好的示例,但仅用于生成图像示例)。有人可能想偷它,把它变成蓝色而不是紫色。如果代码被混淆,他可能会认为复制你的想法并用自己的代码和蓝色背景自己重写更容易,这将比反向工程师和理解你的想法花费更少的时间,也更容易在时间内维护。最终,他将“只”“窃取”你的想法,而不是你的代码

我认为最终,这只是时间问题。

您可以使用以下javascript模糊工具:


关于JavaScript的“保护”——基本上就是其他人所说的

解释:

实际上,它看起来是空的,但是实际的插件代码被附加到jquery.js文件中,从第58行开始:


Liblock是我自己开发的一个小工具。它加密您的JS源代码-这不是简单的模糊处理,而是加密带来的良好安全性

当您在客户机中检查DOM时,您将看到的是:绑定到HTML头中的每个脚本的nplreq(url)

看看它是如何工作的-这是一个仅用于在“nopro_lib”和“xscroll.js”中隐藏脚本的演示

加密和解密对浏览器完全透明。它在个人电脑上用Firefox、Chrome、Opera、Konqueror、IE8-10进行测试,在Android平板电脑上用Dolphin和Safari进行测试


源头被安全地隐藏起来,只有付出巨大的努力,它们才可能再次被打开。加密是使用AES(Rijndael 256)完成的,使用的是一次性密钥,该密钥在客户端和(liblock-)服务器之间使用Diffie Hellman进行协商。

如果您以每个站点为基础授权代码,我建议您也锁定javascript的域

您只需检查加密文件中某个位置的window.location即可完成此操作。这不是很安全,但是对于90%的用户来说,他们只是把一个脚本放到一个目录中,希望它能工作,这将提供一定程度的威慑

您还可以使用(免费)轻松地将脚本锁定到域。这是一个稍微好一点的解决方案,因为DomainLockJS抛出难以跟踪的错误,并且调试起来更困难

更复杂的方法是使用Ajax脚本注入,并允许特定域访问脚本/不触发XSS错误。这是最难设置的,但是如果你注入了大量的js,这可能是最难解决的


所有这些都可以通过一个熟练的程序员来规避。。。你只是让事情变得困难,而不是不可能。

文件是空的,因为实际的倒计时JS代码在
jquery.JS
中。你不能隐藏它,只要它是客户端。-但是使用这些工具中的每一个,代码都可以被反转(即使它几乎不可读)。@亚瑟:当然。唯一的办法是劝阻人们不要试图混淆它。我将在我的帖子中对此进行详细说明。如果他们有一个随机生成名称/变量的ASE应用程序,那就太酷了。这与DRM的概念性缺陷是一样的:你必须拥有受版权保护的材料和一个阅读器/播放器,才能使用它。由于不可能存在真正的技术障碍,DRM倡导者试图利用法律阻止你拥有自己控制的阅读器/播放器。但我们不太可能有浏览器不向我们显示他们正在执行的Javascript(如果我们这样做,这将扼杀JS的创新)。好的混淆器使代码几乎完全不可恢复,以至于根本不值得。如果浏览器可以解密,其他人也可以解密。所以它实际上比混淆更糟糕。@ThiefMaster在控制台中键入
$('script')
似乎足以破坏这里的安全性。