Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体

27
votes
answers
楼主
16 views
+10

如何混淆(保護)JavaScript?[關閉]

我想創建一個非開源的JavaScript應用程序,因此我希望學習如何模糊我的JS代碼?這可能嗎?

我有興趣聽到你試圖混淆代碼的原因,它可能會提供一些必要的上下文來給出一個有用的答案。 - JohnFx 09年1月24日0:46

真正保密的唯一方法是不將其發送給客戶。如果他們沒有,他們就無法閱讀。以加密方式發送它只是在實際關心的少數人手中遇到麻煩,即使你明確發送它,其他所有人都不會蠢蠢欲動(參見DRM)。 - Donal Fellows 2010年6月8日20:42

這個工具真的很棒你可以在網上進行混淆一個混淆的鏈接 - Rinkal Bhanderi 12年3月22日在12:05

混淆代碼並不是一個好主意。它只會給合法用戶帶來不便(例如,當他們需要修復錯誤時),並且不會對那些有(財務)動機進行逆向工程的人“保護”它。從根本上說,不可能阻止Javascript代碼的逆向工程。 - Sven Slootweg 2015年3月29日18:53

不混淆的論點對我來說似乎有瑕疵。除非您真的認為您的用戶可能會修復/報告錯誤,否則您應該這樣做。它可以通過縮小來減少加載時間。它永遠不會阻止一個真正專注的黑客,但它會減慢他/她的速度,它將停止半個黑客的黑客攻擊。它很容易做到並且有很多工具(參見其他答案),我肯定會這樣做,因為大多數時候只有優點,但不要指望它帶來真正的安全性或阻止某人復制你的代碼如果他們真的想。唯一的方法是保持代碼服務器端並使用ajax。 - 本傑明2016年3月27日20:09

沙发
+40

您是否嘗試過 Bananascript 它產生高度壓縮且完全不可讀的代碼。

它很好地壓縮代碼,但只是將最後一行中的eval()更改為console.log(),你的控制台將吐出整個東西 - LobsterMan 2013年3月20日18:48

板凳
+40

我正在使用Closure-Compiler實用程序進行java腳本混淆。它縮小了代碼並具有更多混淆選項。此實用程序位於以下網址的Google代碼中:
關閉工具 <但是現在有一天我聽到很多UglifyJS。
您可以在Closure Compiler和UglifyJS之間找到各種比較,其中Uglify似乎是贏家。
UglifyJS:Node.js的一個快速新的JavaScript壓縮器,它與閉包相提並論

很快我就有機會獲得UglifyJS。

地板
+30

我認為有些企業(例如:JackBe)將加密的JavaScript代碼放在* .gif文件而不是JS文件中,作為混淆的額外措施。

4楼
+30

作為JavaScript / HTML / CSS混淆器/壓縮器,您還可以嘗試 Patu Digua

5楼
+30

嘗試使用此工具 Javascript Obfuscator

我在HTML5遊戲中使用它不僅它將它的大小從950KB減少到150但也使源代碼不可讀的閉包編譯器和縮放器是可逆的我個人不知道如何扭轉這種混淆。

6楼
+30

您一定要考慮查看 Obfuscriptor

我超越了我們從其他工具中看到的典型Javascript縮小技巧,例如 YUI Compressor Google Closure

混淆的代碼看起來更像加密。不像我以前見過的任何東西。

謝謝你的鏈接!剛剛嘗試過obfuscriptor和代碼加密(沒有密鑰???)。並將我的腳本從211壓縮到36 Kb! - Arturo 3月25日在21:41

請注意,Obfuscriptor會提醒您它不能與IE一起使用。這對某些人來說是一個交易破壞者。 - Alan McBee - MSFT於2013年8月19日22:42

答案上的鏈接不再指向該工具。我找不到另一個實時參考。 - buzoherbert 2016年2月1日9:47

第一個環節已經死了。“Obfuscriptor” - Alp Altunel於2017年5月17日14:46

7楼
+30

這個縮小但不會混淆。如果您不想使用命令行Java,可以將javascript粘貼到webform中。

注意:鏈接現在已經死了。 - Scott C Wilson 2013年4月21日19:12

@ScottWilson謝謝,更新了它 - Chris S於2013年4月22日11:49

8楼
+20

如果您使用JavaScript庫,請考慮使用Closure Compiler的高級模式編譯兼容(經過微小修改)的Dojo Toolkit。

Dojo - 與閉包編譯器兼容的唯一JavaScript庫

代碼使用Closure Advanced模式編譯幾乎不可能進行逆向工程,甚至是通過美化器,因為整個代碼庫(包括庫)被混淆了。它平均也小25%。

僅僅縮小的JavaScript代碼(YUI Compressor,Uglify等)在通過美化器後很容易進行逆向工程。

VanillaJS是常規Javascript。那是個笑話。 - 尼爾森2013年12月6日23:54

vanilla-js.com(下載庫,勾選所有選項並查看源代碼以了解它是如何完成的) - Qantas 94 Heavy Dec 6 '13 at 23:55

像香草冰淇淋基本上是平原,很多俚語中的“香草”意味著“平淡或無聊” - TecBrat於2013年12月6日23:55

“Final size: 0 bytes uncompressed, 25 bytes gzipped.” Love it :O) - cronvel Jul 14 '15 at 11:11

真正令人沮喪的是,作為VanillaJS出現在工作規範上 - 悲慘的是,很少有招聘人員知道他們招聘的角色。 - Phil Lello 2016年2月5日9:45

9楼
+20

我過去曾經使用過它,它做得很好。它不是免費的,但你絕對應該看看。
JavaScript Obfuscator&amp;
編碼器

discard