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

2020年用Java安全編程的五個(gè)原則
評(píng)論