歡迎來到 常識詞典網 , 一個專業的常識知識學習網站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
沒有用。用 C-rome 去裝個這個插件 [1],然后打開知乎的 JS [2] 看看。JS 混淆器(比如 [3])也就能重新命名一下變量、函數什么的。逆向工程很容易。JS 虛擬機短期內不會出現。保護好你的服務器端才是王道。[1]:-ttps://c-rome.google/webstore...[2]:static..z-i-u/static...[3]:code.google/closure/答案 2:
closure compiler是基于語法分析的混淆(準確的說是編譯)。用它基本就夠了,被反向后也很難看懂。前端代碼沒必要考慮保護,混淆或壓縮純粹是為了性能。答案 3:
可以混淆和壓縮答案 4:
我覺得js從誕生起就不應該作為一種被保護的代碼,因此你才會看到大量的js庫都以開源方式發布,需要保護的代碼是服務端的代碼(防止你不想要的漏洞挖掘行為)和服務器的安全。
舉個不恰當的例子,優秀的JS代碼之于盜取代碼的人而言就像名畫之于臨摹畫作的人,你需要做的是把畫做好就行,別人臨摹反而是對你“畫作”的一種肯定。因此,防止別人盜取要做的不是把畫給抹掉,而是用法律武器(如果你想非開源并保護你代碼版權的話)。
而虛擬機的話,js執行的宿主環境瀏覽器本來就可以看做一個虛擬機,除非把js弄成編譯型語言,否則并無法做到源代碼直接查看,但是這又會喪失了js本身優秀的動態特性
同樣作為編譯型語言的C# java等依然可以反編譯出非常易讀的代碼(例如C#的反編譯工具reflector),就算是C語言在編譯后也可以反匯編為匯編代碼,只要你有恒心,任何逆向工程都是可以的。因此,只要代碼是在本地執行的,那就不存在絕對的代碼保護。
js現有的保護機制主要為混淆合并等,但是更多這種工具(例如closure compiler)的初衷是用于減小js體積而不是用于混淆代碼,而某些混淆加密工具反而會增大js體積,這在實踐中是不可取的。
答案 5:
壓縮只是減少IO的方式,對代碼保護的作用應該不大。答案 6:
在一個開源時代,有必要保護嗎?答案 7:
發到客戶端的東西不用考慮保密的問題。考慮等于白考慮答案 8:
環境如此,再優秀的"表現"都會被拷貝,沒有完善的知識產權保護體系,保護代碼意義不大答案 9:
目前貌似保護不鳥,使用firefox可以直接查看引用的JS文件,就算壓縮也沒用,現在可以直接解壓縮。答案 10:
只能壓縮加混淆答案 11:
查看本頁的 Javascript 并分析之,謝謝。答案 12:
-tml5本身的標簽貌似強大了好多。。。要保護js。。。最好的辦法就是能不用就不用。。。快搜