一位名為Sam Bocetta的作者發表了一篇文章,針對在2020年使用Java進行編碼時應遵循的五個原則進行了研究。他在文中表示,盡管目前Java的安全性相較于一些舊的語言(特別是C和C ++)而言有所長進,但是使用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
+關注
關注
19文章
2967瀏覽量
104758 -
API
+關注
關注
2文章
1501瀏覽量
62026
發布評論請先 登錄
相關推薦
評論