如何在 2020 年用 Java 安全編程

一位名為 Sam Bocetta 的作者發表了一篇文章,針對在 2020 年使用 Java 進行編碼時應遵循的五個原則進行了研究。他在文中表示,儘管目前 Java 的安全性相較於一些舊的語言(特別是 C 和 C ++)而言有所長進,但是使用 Java 編寫的代碼的漏洞級別還是取決於程序員遵循的優秀實踐。

如何在 2020 年用 Java 安全編程

在當今的開發環境中更是如此,各種新的安全性技術、黑客技術以及新穎的存儲和加密形式,意味著許多人都在質疑著 Java 的安全性。Java 開發人員還面臨著包括雲遷移的安全性問題在內的諸多挑戰。另一方面,新的安全審核技術(如混沌工程)也為開發人員提供了許多提高代碼安全性的機會。

五個原則的具體內容如下:

1. Audit your libraries

首先從基於 Java 的軟件比較明顯的漏洞源開始:外部庫。

使用外部庫本身不是問題。在 2020 年,大多數開發人員的大部分時間確實都花在了與第三方庫的合作上。未來隨著客戶需求的發展,庫的類型也會也來越多。因此,重要的是在每次添加新的庫的時候,開發人員都要去仔細檢查其中的已知漏洞,不能掉以輕心。

審計您的庫不僅對安全性有好處。在審核的同時,您可能還會發現其他對性能產生不利影響的問題。並且,如果您要審核的庫是開源的,則可以藉此機會報告錯誤並在整個開源社區中建立團隊的聲譽。

2. Manage Application Secrets

在管理應用程序的 secrets 時,Java 開發人員也養成了一些壞習慣。基本上,社區可以分為兩個陣營:那些犧牲安全性以便為用戶提供儘可能流暢的軟件體驗的人,以及那些希望用戶花費 4 個小時為自己的利益輸入憑據的人。

實際上,2020 年的編碼意味著要在安全性和可用性之間取得平衡。對可用性的過多關注通常會導致代碼不安全,對安全性的過多關注則意味著用戶將會花費大部分時間來嘗試規避你採取的安全措施,且他們最終也會成功找到方法。

而在管理應用程序的 secrets 時,Java 開發人員可以從瞭解 CMS 平臺之間的差異中學到很多東西。因為大多數的 CMS 平臺都具有龐大的用戶基礎,這意味著其開發人員必須仔細考慮如何管理應用程序的 secrets ,同時還要保持普通用戶的可用性。

3. Use Mature Encryption Libraries

用於加密的庫應該比其他類型的庫進行審計和分析的頻率更高。過去,用於加密的 Java 庫極難使用,其 API 對普通開發人員的幫助不足。這也就導致了許多 Java 開發人員開始自己編寫加密庫。

在此過程中,一些人開始錯誤地對自己的加密技術產生濃重的自豪感,並對他人編寫的代碼產生懷疑。而此舉並不可取,畢竟一些開發人員一生都在致力於製作不可破解的加密庫,他們編寫的加密庫性能勢必要強於大部分人。

用 Java 進行加密的比較好的方法則是使用該語言提供的內置工具,重新發明輪子沒有任何意義(也存在重大弊端)。

4. Validate Your Inputs

如上所述,2020 年的編程很大一部分是確保您的用戶不會破壞您精心設計的軟件。最簡單的方法之一是花費一些時間來驗證用戶輸入。此舉不僅能使您的應用程序更安全,也會使得它們更易於使用。

5. Don’t Reinvent the Wheel

最後,一種萬能的原則適用於所有語言的所有開發人員:不要自己製作易於使用的版本。

自己製作庫的問題在於,晦澀的代碼本質上並沒有比公開可用的代碼更安全。主要原因是開源庫在被眾人使用的同時,也在被成千上萬人檢查。因此,其中所存在的漏洞也會很快被發現。

總結

100% 的安全是不可能的。確保 Java 開發中的安全性的關鍵是,擁有一個用於檢查安全漏洞並將其關閉的系統。比較重要的是,Java 開發人員應該意識到,確保代碼安全是一個過程,而不是一個事件。並且,所有地這些問題都需要通過在程序的整個生命週期中進行仔細的審核來解決。

敲黑板

需要尋找一起學習的夥伴關注+轉發+私信“Java”

需要學習資料的夥伴關注+轉發+私信“Java”

需要一起聊天互相探討的夥伴關注+轉發+私信“Java”


如何在 2020 年用 Java 安全編程


分享到:


相關文章: