2013-03-02 103 views
17

其实我正在开发一个Chrome扩展插件和一个jQuery插件来上传并在Codecanyon上销售它。当我检查页面的“源代码”并单击“资源”选项卡时,JavaScript文件看起来为空。 Codecanyon如何做到这一点?我想在我自己的网站上进行文件防盗,但我不知道该怎么做。我知道PHP和JavaScript,并没有办法做到这一点,因为浏览器下载文件执行它。如何防止javascript代码被盗用?

您可以看到示例here

+7

该文件为空,因为实际的倒计时JS代码在'jquery.js'中。只要是客户端,就无法隐藏它。 – Arthur 2013-03-02 09:41:05

+2

http://en.wikipedia.org/wiki/Obfuscation_(software) - http://www.dmoz.org/Computers/Programming/Languages/JavaScript/Tools/Obfuscators/ – mplungjan 2013-03-02 09:50:41

回答

10

您只能尽量减少可读性(通过minifiaction和模糊处理),但代码仍然被转移并且可以进行反向设计。

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

14

如果您看到它是空的,这意味着它是空的。没有办法从必须执行代码的客户端隐藏您的JavaScript代码。

36

您无法隐藏它,因为您的浏览器需要它来执行它。就那么简单。

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

不过你可以使用工具,如YUI compressor

它混淆基本上,这种工具去除多余的空格,制表符线返回并重新命名方法(如方法“A”代表“MyShinyMethodWhoMakesNiceStuff”)和变量。这使得阅读和理解代码变得非常困难。因此逆向工程难以实现。

一些使用一些技巧,如base64或其他编码和解码部分代码与功能,但它只是技巧,不会欺骗敏锐的眼睛。

通过混淆,你让人们花更多的时间在分析你的代码,窃取因此更为复杂,需要时间。比方说,你打了一个漂亮的JavaScript插件,它在每一个紫色白色背景(好吧,没有那么大的例子,但用它只是用于具有成像例子)。有人可能想窃取它,并使其变成蓝色而不是紫色。如果代码进行模糊处理,他可能会觉得这是比较容易复制你的想法,用他自己的代码和蓝色背景重写它自己,它会需要他比反向工程师和理解水井你的,更容易在时间内保持得时间更短。最后,他将“只”“窃取”你的想法,而不是你的代码。

我认为,在年底,这只是一个时间问题。

+1

但是对于这些工具中的每一个,代码可以颠倒过来(即使它很难读取)。 – Arthur 2013-03-02 09:42:52

+0

@Arthur:当然。唯一的办法是阻止人们试图对其进行混淆。我会在我的文章中精确。 – moxy 2013-03-02 09:56:01

+0

如果他们有一个随机生成名称/变量的应用程序,这将是很酷的。 – 2013-03-02 14:10:43

-7

Liblock是自己建立一个小工具。它加密你的JS源代码 - 这不是简单的混淆,而是加密的安全性。

当您检查客户端中的DOM时,您将看到的所有内容都是:nplreq(url),用于绑定到HTML头中的每个脚本。

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

加密和解密对浏览器完全透明。它通过Firefox,Chrome,Opera,Konqueror,IE8-10以及Android平板电脑上的Dolphin和Safari进行了测试。

这些来源是安全隐藏的,只有付出巨大的努力,它们才能再次开放。 AES(Rijndael 256)使用Diffie-Hellman在客户端和(liblock-)服务器之间协商的单次密钥进行加密。

+8

“加密安全性好” - 这是BS。如果浏览器可以解密,其他人也可以这样做。所以它实际上比混淆更糟糕。 – ThiefMaster 2013-03-15 19:16:30

+2

@ThiefMaster它看起来像在控制台输入'$('script')'足以破坏安全性。 – 2013-03-15 19:33:26