簡體   English   中英

如何混淆或使我的JavaScript文件難以理解?

[英]How can i obfuscate or make unreadable my JavaScript files?

我的應用程序中包含JavaScript腳本,包含JavaScript和jQuery函數。 所有用戶與我的應用程序的交互都是動態的,它通過jQuery傳遞給應用程序。

我意識到,當我在客戶端運行我的應用程序時,客戶端可以通過查看頁面源( Ctrl + U )來查看我的所有源代碼。

如何隱藏或執行某些操作以便用戶無法理解或閱讀源代碼?

我想做像Facebook那樣的事情。 通過查看Facebook源用戶無法重用其源代碼甚至無法理解它。

我用Google搜索並發現這個過程稱為混淆,但這對我不起作用。

我試過這個:

http://www.javascriptobfuscator.com/default.aspx

http://dean.edwards.name/packer/

http://www.daftlogic.com/projects-online-javascript-obfuscator.htm

甚至我試過http://www.jasob.com/

但這對我沒用。

如果有人真的關心你的代碼,他將采取不縮小的工作量(用有用的變量/函數名替換隨機)。 “加密”或打包等其他任何東西都只是蛇油,因為它可以很容易地恢復。 因此,為自己節省一些工作,而不是花費在改善應用程序上。

所以:你應該在生產系統上做的唯一事情是縮小你的JS代碼。 這使它更小,因此加載更快 - 所以它實際上是一個優勢。 除此之外,對於那些只是對快速看起來好奇但又不想花時間的人來說,它會降低它的可讀性。

例如,facebook JS文件只是縮小了 - 很可能只是出於帶寬/性能原因。


縮小JavaScript的最簡單方法是使用Google的Web服務: http//closure-compiler.appspot.com/home
請注意,它有1MB的限制,所以如果你的JS很大,你可能需要下載基於Java的minifier來在本地運行它。

ThiefMaster說的一切都是真的。 值得注意的是,您的應用程序的設計應假設用戶可以查看和操作客戶端上的所有內容。 如果您擔心混淆,因為您認為它會阻止用戶查看敏感數據或操縱價格等信息,那么您需要重新設計應用程序,以便安全邏輯駐留在服務器上。

因為我需要縮小我的javascript源代碼,我正在尋找一個javascript程序,它自己縮小任何javascript代碼。

為什么一個javascript minifier? 因為,我正在從Web服務器向客戶端編寫一些隨機的javascript代碼。

我應該在Web服務器上使用“node.js”來執行一個javascript程序,它生成一個javascript代碼並在運行中將其縮小並發送給客戶端。

這個javascript程序是一個:加密和解密程序。 客戶端的javascript代碼結果應該包含一個javascript函數,它解密加密數據的json或十六進制版本的每個部分。 該函數執行整數的加,減和乘法。 有時候,我可以生成一個條件(if,then和else)來計算兩個不同的操作。 此函數用於解密兩個或多個參數輸入。

這是隨機函數:每次客戶端請求一些私有數據時,Web服務器都會生成兩個不同的javascript函數:一個用於加密,另一個用於解密。 解密功能被發送到客戶端。 Web服務器使用加密功能來加密私有數據並將其發送到客戶端。 這對於混淆是有意義的:每次進程運行時,每次發送功能完全不同。

並且,為了說服加密/解密非常安全,我為客戶端添加了兩個或更多參數的表格值轉換; 但是,表格值實際上是由為Web服務器編寫的函數生成的,並且包含一些數字常量,這些常量永遠不會發送給客戶端。 因此,任何想要解密的人都必須具有常量值。

我解釋了這個過程,因為:

  1. 你在javascript源代碼中采取了一些關於混淆的事情; 但是,網絡服務器和瀏覽器尚未實現javascript中的混淆......也許,它可能會發生......但是,在“SSL-ize”的幫助下,什么樣的解決方案對於互聯網上的所有傳輸都是有用的。

  2. 可以使用可讀的加密/解密函數進行加密和解密。 而且,沒有SSL證書的成本。 甚至,“中間人”會解密加密數據; 為此,他只需要執行javascript函數。 好吧..但是想象一下javascript解密函數也被加密......然后,“中間人”必須執行解密功能,然后再解密解密的內容,這些內容是javascript函數,用於解密加密數據。

並且,想象一下,如果Web服務器向客戶端提出問題,並且唯一的答案由客戶端的結果計算(其未通過Internet發送)處理......那么“中間人”無法得到答案。

看看我的想法; 我在等待任何人的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM