一位名為Sam Bocetta的作者發(fā)表了一篇文章,針對在2020年使用Java進行編碼時應(yīng)遵循的五個原則進行了研究。他在文中表示,盡管目前Java的安全性相較于一些舊的語言(特別是C和C ++)而言有所長進,但是使用Java編寫的代碼的漏洞級別還是取決于程序員遵循的最佳實踐。
在當(dāng)今的開發(fā)環(huán)境中更是如此,各種新的安全性技術(shù)、黑客技術(shù)以及新穎的存儲和加密形式,意味著許多人都在質(zhì)疑著Java的安全性。Java開發(fā)人員還面臨著包括云遷移的安全性問題在內(nèi)的諸多挑戰(zhàn)。另一方面,新的安全審核技術(shù)(如混沌工程)也為開發(fā)人員提供了許多提高代碼安全性的機會。
五個原則的具體內(nèi)容如下:
1. Audit your libraries
首先從基于Java的軟件最明顯的漏洞源開始:外部庫。
使用外部庫本身不是問題。在2020年,大多數(shù)開發(fā)人員的大部分時間確實都花在了與第三方庫的合作上。未來隨著客戶需求的發(fā)展,庫的類型也會也來越多。因此,重要的是在每次添加新的庫的時候,開發(fā)人員都要去仔細(xì)檢查其中的已知漏洞,不能掉以輕心。
審計您的庫不僅對安全性有好處。在審核的同時,您可能還會發(fā)現(xiàn)其他對性能產(chǎn)生不利影響的問題。并且,如果您要審核的庫是開源的,則可以借此機會報告錯誤并在整個開源社區(qū)中建立團隊的聲譽。
2. Manage Application Secrets
在管理應(yīng)用程序的secrets時,Java開發(fā)人員也養(yǎng)成了一些壞習(xí)慣?;旧?,社區(qū)可以分為兩個陣營:那些犧牲安全性以便為用戶提供盡可能流暢的軟件體驗的人,以及那些希望用戶花費4個小時為自己的利益輸入憑據(jù)的人。
實際上,2020年的編碼意味著要在安全性和可用性之間取得平衡。對可用性的過多關(guān)注通常會導(dǎo)致代碼不安全,對安全性的過多關(guān)注則意味著用戶將會花費大部分時間來嘗試規(guī)避你采取的安全措施,且他們最終也會成功找到方法。
而在管理應(yīng)用程序的secrets時,Java開發(fā)人員可以從了解CMS平臺之間的差異中學(xué)到很多東西。因為大多數(shù)的CMS平臺都具有龐大的用戶基礎(chǔ),這意味著其開發(fā)人員必須仔細(xì)考慮如何管理應(yīng)用程序的secrets,同時還要保持普通用戶的可用性。
3. Use Mature Encryption Libraries
用于加密的庫應(yīng)該比其他類型的庫進行審計和分析的頻率更高。過去,用于加密的Java庫極難使用,其API對普通開發(fā)人員的幫助不足。這也就導(dǎo)致了許多Java開發(fā)人員開始自己編寫加密庫。
在此過程中,一些人開始錯誤地對自己的加密技術(shù)產(chǎn)生濃重的自豪感,并對他人編寫的代碼產(chǎn)生懷疑。而此舉并不可取,畢竟一些開發(fā)人員一生都在致力于制作不可破解的加密庫,他們編寫的加密庫性能勢必要強于大部分人。
用Java進行加密的最好方法則是使用該語言提供的內(nèi)置工具,重新發(fā)明輪子沒有任何意義(也存在重大弊端)。
4. Validate Your Inputs
如上所述,2020年的編程很大一部分是確保您的用戶不會破壞您精心設(shè)計的軟件。最簡單的方法之一是花費一些時間來驗證用戶輸入。此舉不僅能使您的應(yīng)用程序更安全,也會使得它們更易于使用。
5. Don’t Reinvent the Wheel
最后,一種萬能的原則適用于所有語言的所有開發(fā)人員:不要自己制作易于使用的版本。
自己制作庫的問題在于,晦澀的代碼本質(zhì)上并沒有比公開可用的代碼更安全。主要原因是開源庫在被眾人使用的同時,也在被成千上萬人檢查。因此,其中所存在的漏洞也會很快被發(fā)現(xiàn)。
總結(jié)
100%的安全是不可能的。確保Java開發(fā)中的安全性的關(guān)鍵是,擁有一個用于檢查安全漏洞并將其關(guān)閉的系統(tǒng)。最重要的是,Java開發(fā)人員應(yīng)該意識到,確保代碼安全是一個過程,而不是一個事件。并且,所有地這些問題都需要通過在程序的整個生命周期中進行仔細(xì)的審核來解決。
-
JAVA
+關(guān)注
關(guān)注
20文章
2989瀏覽量
109516 -
API
+關(guān)注
關(guān)注
2文章
1605瀏覽量
63988
發(fā)布評論請先 登錄
高速PCB布局/布線的原則

從 Java 到 Go:面向?qū)ο蟮木奕伺c云原生的輕騎兵
五大云計算平臺的建設(shè)原則,缺一不可!
Java微服務(wù)中如何確保安全性?
上汽大通eTerron 9斬獲歐洲Euro NCAP五星安全認(rèn)證
Java 23功能介紹

深入了解Java泛型——從前世今生到PECS原則

對比Python與Java編程語言
C語言與Java語言的對比
安全型繼電器要符合什么原則
甲骨文發(fā)布Java 23
java子類可以繼承父類的什么
三十分鐘入門基礎(chǔ)Go Java小子版

華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

評論