首頁  >  文章  >  web前端  >  Web前端JS程式碼需要保護嗎?如何保護Web前端JS程式碼

Web前端JS程式碼需要保護嗎?如何保護Web前端JS程式碼

php是最好的语言
php是最好的语言原創
2018-08-07 09:29:152185瀏覽

Web前端JS程式碼需要保護嗎? 

這得具體情況具體分析。
1、如果只是寫一段web頁面圖片輪播,或是跑馬燈效果等等之類簡單的功能。那不需要保護。
2、如果是精心設計一個絢麗的特效,如果想要保護這段自己付諸幸苦實現的特效代碼不被他人隨意拿去使用,那應該保護這段JS代碼!
3、如果頁面上有重要的功能是用JS程式碼管控的,例如交易邏輯、帳號密碼資訊、個人隱私、甚至有與遠端伺服器或資料庫的通訊等等,那麼相關的js程式碼非常應該被保護、應該做JS代碼防盜保護!
否則可能引起被駭客分析、攻擊等嚴重問題。安全相關的事情,從來都要防患於未然、不可心存僥倖。除非它對你毫不重要。

Web前端JS程式碼需要保護嗎?如何保護Web前端JS程式碼

如何保護Web前端JS程式碼?
1、打包&壓縮
有人認為打包、壓縮就是對JS程式碼的保護。確實,打包在一定程度上可以起碼些許保護作用,好像看起來是如此。但打包、壓縮的目的並不是為了保護JS程式碼,而是為了使用方便、減少程式碼體積,方便使用、方便傳輸。例如模組化的程式設計可能產生200個JS文件,如果使用時逐一用「script src」來引用…這是種折磨,不管是對於代發人員,還是網路載入(瀏覽器也會生氣!x_x)。
類似Webpacket、Gulp進行打包,可以將這些多個JS合成到一個文件,並且可能會進行回車、換行、空格的刪除,以實現代碼壓縮,也有一些簡單混淆操作:把長變量名改為統一風格的短變數名等。然後,最終產生的一個檔案。程式碼總量減少了、可讀性差了、使用方便了。同時讓有些人認為這也實現了JS程式碼保護。其實、實際上、當然的程式碼並沒有被保護:可讀性依舊,只是程式碼量大了一些而已,只要稍稍耐心的讀代碼,會發現,程式碼依然是很易理解的,沒有多少安全性可言。
2、混淆&加密
前端JS程式碼的保護,必需要混淆和加密共用。
單獨的JS原始碼加密,是行不通的,更不可能有所謂的JS不可逆加密。因為程式碼在瀏覽器端執行時,必須轉解密還原成原始程式碼,才能被瀏覽器的JS引擎辨識和運作。解密後,會存在完整的原始JS程式碼。這是非常不安全的存在,有多種方法可將原始的JS程式碼顯示出來。
JS程式碼混淆被不少開發人員認為是不夠高階的JS程式碼保護方式,聽起來不如JS原始碼加密更具安全性。事實上,混淆也有多個層級。例如比較低階的字元搜尋和串替換、隨機插入偽殭屍代碼、字串十六進位化等等。而也有高端的手法,會先進行語法分析、詞法分析,重建語法樹,相當於已經實現了一個JS引擎,在引擎中處理代碼,那麼,就可以在其中任意一步進行自由度極高的操作,例如在語法樹中插入新的語法結構、例如可以將字串全部提取並進行加密、可以對變數進行整體有規則化的重定義使無意義化等等。這樣就可以實現真正的程式碼重建。這樣重建的JS程式碼安全性,將會有一個質的提升。
當正真的混淆和加密聯合使用,例如JShaman JS保護,Web前端JS程式碼需要保護嗎?如何保護Web前端JS程式碼 可以實現真正的JS程式碼安全保護。 JS混淆中融入JS加密,JS加密中又嵌入JS混淆。這樣保護後的程式碼,即使在客戶端執行環境中被逆向還原,得到的也是大量意義不明的函數、程式碼、字串。特別重點是:程式碼已經經過了重建,這時逆向得到的也是分離後的重建的無意義JS程式碼、大量的殭屍程式碼、混淆的字串、不明含意的變數。可讀性與原始程式碼相比…天壤之別。
固執的人或許還會說:沒有破解不了的保護方案,只要我認真、用心、用時的分析,還是能分析出原始程式碼含意的,確實,可能如此。
但是,原本的程式碼,可能只要讀10分鐘,而從這樣保護後的JS程式碼讀取原始含意,可能需要…10個月。而這時候,我們的JS程式碼可能已經更新到下一版了。
JS程式碼保護的目的已經達成了,不是嗎?

相關推薦:

Web 前端程式碼規格

web前端開發upload上傳頭像js範例程式碼

以上是Web前端JS程式碼需要保護嗎?如何保護Web前端JS程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn