the 是否使用足以保證我的JavaScript代碼的混淆器?




js formmater (8)

我正在構建一個用JavaScript編寫的開發工具。

這不會是一個開源項目,將作為商業產品銷售(希望)。

我正在尋找保護我的投資的最佳方式。 使用混淆器(code mangler)足以合理保護代碼?

有沒有其他的選擇,我不知道?

(我不確定混淆器是否是正確的詞,這是一個需要你的代碼,使得它非常難以閱讀的應用程序之一。)


如果你試圖混淆你的代碼,希望別人沒有竊取你的代碼,那麼你將會打敗一場失敗的戰鬥。 您可能會阻止隨便的瀏覽器進入,但是專注的人幾乎肯定能夠克服您使用的任何措施。

在過去,我看到人們做了幾件事情:

  1. 在頁面頂部粘貼大量空白,並顯示一條消息,告訴用戶代碼不可用,而實際上只需要向下滾動幾頁即可。
  2. 通過某種編碼器來運行它,這是非常有用的,因為它可以通過解碼器運行。
  3. 另一種方法是將變量名減少為一個字符並刪除空格(這也是一個有效的事情)。

還有很多其他的方法。

最後,你的努力只會阻止偶然的瀏覽器看到你的東西。 如果有人專門來了,那麼你將無法做到。 你將不得不忍受這一點。

我的建議是製作一個非常棒的產品,吸引最多的人,並通過擁有最好的產品/服務/社區而不是最混亂的代碼打敗任何競爭對手。


這可能是最好的,你可以做的。 只要知道任何人有足夠的奉獻精神,就可能會去混淆你的程序。 在開始你的項目之前,確保你對此感到滿意。 我認為最大的問題是控制誰在他們的網站上使用它。 如果有人去你的代碼上的網站,並喜歡它的作用,他們不明白代碼做什麼,或不能讀取它,只要他們可以復制代碼,並且在自己的網站上使用它。


我要告訴你一個秘密。 一旦你理解了這一點,你會感覺到更好的事實,即JavaScript混淆只有在通過線路發送腳本時節省帶寬才是真正有用的。

你的源代碼是不值得竊取。

我知道這是對自我的一個震撼,但是我可以自信地說,沒有看到你寫的一行代碼,因為除了發生嚴重的魔法發展的極少數領域之外,所有的源代碼都是如此。

說明天,有人在你的家門口扔了一堆DVD,包含Windows Vista的源代碼。 你能用它做什麼? 當然,你可以編譯它並提供副本,但這只是複制零售版本的一個步驟。 你可以辛苦地找到並刪除許可證檢查代碼,但這是一些聰明的孩子已經做了二進製文件。 更換標誌和圖形,假裝你自己寫了,並將其作為“Vicrosoft Mista”銷售? 你會被抓到的

你可能花費大量的時間閱讀代碼,試圖理解它,並真正“竊取微軟在開發產品上投入的知識產權”。 但是你會失望的 你會發現代碼是一系列世俗的決定,一個接一個地做出來的。 有些人會比你想像的更聰明。 有些人會讓你搖頭,想知道他們在那邊僱用什麼樣的猴子。 大多數只會讓你聳聳肩,說:“是的,你就是這麼做的。”

在這個過程中,你將學到很多關於編寫操作系統的知識,但是這不會傷害微軟。

將“Vista”替換為“Leopard”,上面的段落不會改變。 這不是微軟,它是軟件 。 這個網站上的一半人可能會開發一個堆棧溢出克隆,無論是否查看本網站的來源。 他們沒有。 Firefox和WebKit的源代碼在那裡供任何人閱讀。 現在就從頭開始編寫自己的瀏覽器。 幾年後見

軟件開發是時間的投資。 想像自己所做的事情是如此特別,以至於沒有看到自己的來源,甚至沒有可操作的(並且容易檢測到的)剪切和粘貼量,它們會使得他們的工作變得更容易。


代碼混淆器對於需要最少保護的東西就足夠了,但是我認為它絕對不足以真正保護你。 如果你有耐心,你可以真正的解開整個事情..我相信有程序為你做。

話雖如此,你不能阻止任何人盜用你的東西,因為他們最終會破壞你創造的任何形式的保護。 在代碼沒有被編譯的腳本語言中特別容易。

如果您使用的是其他語言,可能是java或.NET,則可以嘗試執行“回家”等操作,以驗證許可證號是否與給定的url匹配。 如果你的應用程序是某種在線應用程序,那麼它就可以工作。 但是通過訪問來源,人們可以輕鬆繞過這一部分。

總之,JavaScript是一個糟糕的選擇,你在做什麼。
從你正在做的一個步驟可能是使用web服務後端來獲取您的數據。 讓web服務處理認證/驗證過程。 需要一些工作來確保它是防彈的,但它可能工作


我深深的不同意上面的大多數答案。

確實,每一個軟件都可能被盜取,儘管混淆不清,但至少使軟件的各個部分難以提取和重用 ,這就是重點。

使用混淆可能比使代碼公開並在法庭上作鬥爭之後,有人偷走我們的軟件的最好部分並且造成了危險的並發性,這樣做更便宜,風險更小。

未混淆的代碼耳語:

  • 來吧,分析我,重用我。 也許你可以用我做一個更好的軟件。

混淆的代碼說:

  • 走開哥們。 使用自己的想法比試圖破解我更便宜。

我會說是的,如果你也確保你使用像Dean Edward's Packer或類似的工具壓縮代碼,那就夠了。 如果在.NET中使用反向工程編譯代碼/ IL來思考使用.NET Reflector這樣的工具的可能性,那麼就意識到沒有什麼可以完全保護您的投資了。

另一方面,請記住,釋放源代碼的人似乎也做得相當不錯 - 這是他們的經驗,人們所需要的不僅僅是他們的知識產權。


你總是面臨這樣一個事實,任何來到你的網頁的用戶都會下載你的Javascript源代碼的一些工作版本。 他們有源代碼。 混淆它可能會使得人們非常難以重複使用,以盜取你的辛勤工作。 但是,在很多情況下,甚至有人可以重用混淆的源代碼! 或者在最壞的情況下,他們可以手工解開它,並最終理解它。

像你這樣的情況的例子可能是谷歌地圖 。 Javascript的來源顯然是混淆的。 但是,對於真正的私有/敏感邏輯,他們將數據推送到服務器,並讓服務器使用XMLHttpRequests(AJAX)處理該信息。 通過這種設計,您在服務器端擁有重要的部分,受到更嚴格的控制。


如果這是一個網站,就其本質而言,它的代碼查看一個菜單點擊, 真的有什麼理由來隱藏任何東西? 如果有人想竊取你的代碼,他們很可能會經過努力,甚至是最可怕的代碼人類可讀。 看看商業網站,他們不會混淆他們的代碼,也沒有人出去竊取谷歌應用程序的代碼。 如果你真的擔心代碼被盜,我會主張用其他編譯語言來編寫代碼。 (這當然會摧毀整個webapp的東西...)即使這樣,你也不是完全安全的,那裡有很多解編譯器。

所以,真的,有足夠的動力的人面對沒有辦法做你想要的。





obfuscation