2013-03-02 99 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