其實我正在開發一個Chrome擴展插件和一個jQuery插件來上傳並在Codecanyon上銷售它。當我檢查頁面的「源代碼」並單擊「資源」選項卡時,JavaScript文件看起來爲空。 Codecanyon如何做到這一點?我想在我自己的網站上進行文件防盜,但我不知道該怎麼做。我知道PHP和JavaScript,並沒有辦法做到這一點,因爲瀏覽器下載文件執行它。如何防止javascript代碼被盜用?
您可以看到示例here。
其實我正在開發一個Chrome擴展插件和一個jQuery插件來上傳並在Codecanyon上銷售它。當我檢查頁面的「源代碼」並單擊「資源」選項卡時,JavaScript文件看起來爲空。 Codecanyon如何做到這一點?我想在我自己的網站上進行文件防盜,但我不知道該怎麼做。我知道PHP和JavaScript,並沒有辦法做到這一點,因爲瀏覽器下載文件執行它。如何防止javascript代碼被盜用?
您可以看到示例here。
您只能儘量減少可讀性(通過minifiaction和模糊處理),但代碼仍然被轉移並且可以進行反向設計。
示例中的實際代碼是與jquery.js文件一起下載的。
如果您看到它是空的,這意味着它是空的。沒有辦法從必須執行代碼的客戶端隱藏您的JavaScript代碼。
您無法隱藏它,因爲您的瀏覽器需要它來執行它。就那麼簡單。
您需要了解它是在客戶端執行的腳本。它沒有被編譯(意味着它不是二進制的(0和1機器語言))。所以它可以自由閱讀。
不過你可以使用工具,如YUI compressor
它混淆基本上,這種工具去除多餘的空格,製表符線返回並重新命名方法(如方法「A」代表「MyShinyMethodWhoMakesNiceStuff」)和變量。這使得閱讀和理解代碼變得非常困難。因此逆向工程難以實現。
一些使用一些技巧,如base64或其他編碼和解碼部分代碼與功能,但它只是技巧,不會欺騙敏銳的眼睛。
通過混淆,你讓人們花更多的時間在分析你的代碼,竊取因此更爲複雜,需要時間。比方說,你打了一個漂亮的JavaScript插件,它在每一個紫色白色背景(好吧,沒有那麼大的例子,但用它只是用於具有成像例子)。有人可能想竊取它,並使其變成藍色而不是紫色。如果代碼進行模糊處理,他可能會覺得這是比較容易複製你的想法,用他自己的代碼和藍色背景重寫它自己,它會需要他比反向工程師和理解水井你的,更容易在時間內保持得時間更短。最後,他將「只」「竊取」你的想法,而不是你的代碼。
我認爲,在年底,這只是一個時間問題。
JavaScript的 「保護」 - 基本上是其他人說。
事實上,http://demos.pixelworkshop.fr/circular_countdown_cc/js/countdown.min.js顯示爲空,然而實際的插件代碼附加到jquery的。js文件,開始於第58行:
http://demos.pixelworkshop.fr/circular_countdown_cc/js/jquery.js
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-)服務器之間協商的單次密鑰進行加密。
「加密安全性好」 - 這是BS。如果瀏覽器可以解密,其他人也可以這樣做。所以它實際上比混淆更糟糕。 – ThiefMaster 2013-03-15 19:16:30
@ThiefMaster它看起來像在控制檯輸入'$('script')'足以破壞安全性。 – 2013-03-15 19:33:26
該文件爲空,因爲實際的倒計時JS代碼在'jquery.js'中。只要是客戶端,就無法隱藏它。 – Arthur 2013-03-02 09:41:05
http://en.wikipedia.org/wiki/Obfuscation_(software) - http://www.dmoz.org/Computers/Programming/Languages/JavaScript/Tools/Obfuscators/ – mplungjan 2013-03-02 09:50:41