做者:Jscramblerjavascript
翻譯:瘋狂的技術宅php
原文:blog.jscrambler.com/enterprise-…前端
未經容許嚴禁轉載java
若是你正在使用 JavaScript,那你應該熟悉它的歷史。這個有着 24 年曆史的編程語言在過去幾年裏發生了巨大的變化,特別是隨着 Node.js 和 JS 框架的出現。算法
若是當初 JavaScript 成爲一種使網站變得動態且更有趣的噱頭,那麼今天的狀況就徹底不一樣了。 JavaScript 是使今天的如此 Web 強大的主要緣由。npm
97%的現代 Web 應用使用了 JavaScript,幾乎每一家 500 強公司都依賴 Node.js 和 JavaScript 來建立 Web 和移動應用應對激烈的競爭。編程
隨着漸進式 Web 應用做爲本機應用的可行替代方案而被快速採用,這種增加彷佛確實會加速。 JavaScript 不只適用於 Web,也適用於移動端和能夠跨平臺的桌面端。前端工程化
儘管其有着衆多優點和商業價值,可是咱們仍然必須考慮另外一面:使用 JavaScript 所涉及到至關大的安全威脅。瀏覽器
JavaScript 須要由瀏覽器處理才能工做。這意味着它沒法以可行的方式進行加密。任何人均可以訪問、閱讀和修改 JavaScript 代碼。雖然看上去能夠認爲只要公司不在客戶端存儲重要的業務邏輯,這就不會成爲問題。可是服務器調用須要時間,而在性能相當重要的服務中,例如流媒體、電子商務或遊戲,這不是很好的選擇。所以出於性能考慮,專有算法須要被放置在客戶端。安全
當咱們將專有算法和暴露環境這兩樣結合起來時,會引起一個災難。長期以來,惡意攻擊者一直在利用暴露的 JavaScript 竊此代碼並從新分發山寨應用,並且這只是冰山一角。
暴露的 JavaScript 打開了自動化濫用的大門。例如,雲提供商能夠爲新賬戶免費提供1個月的服務,這可能會被惡意參與者經過自動建立賬戶的腳本濫用。這在不適用驗證碼的用例中尤爲重要。
爲了控制賬戶濫用並打擊欺詐行爲,一些公司部署了 JavaScript agents 以抵禦殭屍程序或提供設備指紋識別。可是由於這些 agents 的代碼也暴露了,攻擊者也能夠對其進行逆向工程來徹底繞過它們。
還有做弊和盜版的狀況。攻擊者能夠利用暴露的 JavaScript 來繞過程序的限制,在不付費的狀況下解鎖新功能或違反許可協議 —— 這些都會對公司的業務模式構成威脅。
經過逆向工程遊戲源碼來繞過付費
許可協議和版權對於視頻或音頻流等數字內容尤其重要。經過訪問 HTML5 網絡播放器的底層 JavaScript,攻擊者能夠捕獲並從新分發流,從而致使流媒體提供商的巨大商業損失。
企業依靠 JavaScript 來開發應用,這些應用程序是其業務的核心,卻將其核心邏輯和專有算法置於攻擊之下。一樣他們也沒法加密這些代碼。但他們能夠作的是經過一系列防止全部上述攻擊行爲的安全層來保護 JavaScript。
當咱們解決代碼盜竊和逆向工程的威脅時,保護 JavaScript 的惟一可行方法是隱藏其邏輯。這是 OWASP 關於其移動應用十大安全風險的推薦,M9-逆向工程:
爲了防止逆向工程,你必須使用混淆工具。
JavaScript 混淆是保護 JavaScript 源代碼的核心步驟。混淆的 JavaScript 對於閱讀、理解和逆向工程來講極其複雜。可是不一樣的 JavaScript 混淆器提供了不一樣的保護級別,開發團隊一般很難決定應該使用哪一種工具。免費的混淆器只能提供基本的轉換,並且可使用自動化工具輕鬆反轉。在決定使用哪一種混淆工具時,除了考慮工具的成本以外,你還應該問本身:
若是攻擊者要從新分發、篡改個人代碼或繞過咱們的許可協議,那個人業務成本是多少?
並且咱們仍然必須考慮更高級的程序被濫用、做弊和盜版的威脅。免費的混淆器並不能提供真正的保護。一樣,企業級的問題須要企業級解決方案。
面向企業市場的 JavaScript 保護解決方案。它不只要提供最早進的混淆技術,還須要從如下三個面層來緩解調試和嘗試篡改的威脅:
這些技術的結合可以有效地緩解濫用、欺騙、盜版、代碼盜竊以及經過客戶端進行逆向工程的嘗試。
JavaScript 將來的前景很是不錯。企業能夠經過利用 JavaScript 的通用性、靈活性和極其活躍的社區,在 Web 和移動設備上提供高級的用戶體驗,並不斷提升服務標準。
雖然咱們不但願惡意行爲者爲了本身的利益而盯上本身的應用,但公司能夠(而且應該)採起行動來隱藏其代碼邏輯並積極的阻止調試和篡改的企圖。與某些人的觀點不一樣,這不是傳統的安全問題 —— 而是須要添加新的安全層來進一步保護公司的關鍵業務資產。