第三十三章、如何寫出安全的java代碼

從java語言的角度,需要重視的是程序級別的攻擊,也就是利用Java、jvm或應(yīng)用程序的瑕疵,進行低成本的Dos攻擊,這也是想要寫出安全的java代碼所必須考慮的,例如:

? ? 1、如果使用的是早期的JDK和Applet等技術(shù),攻擊者構(gòu)建合法但惡劣的程序就相對容易,例如,將其線程優(yōu)先級設(shè)置為最高,做一些看起來無害但空耗資源的事情;

? ? 2、利用java構(gòu)建類似上傳文件或者其他接受輸入的服務(wù),需要對消耗系統(tǒng)內(nèi)存或存儲的上線有所控制,因為我們不能將系統(tǒng)安全依賴于用戶的合理使用。其中特別注意的是涉及解壓縮功能時,就需要防范zip bomb等特定攻擊;

? ? 3、另外,java程序中需要明確釋放的資源又很多種,比如文件描述符,數(shù)據(jù)庫連接,甚至?xí)r再入鎖,任何情況下都應(yīng)該保證資源釋放成功,否則即使平時能夠正常運行,也可能被攻擊者利用而耗盡某類資源,這也算是可能的Dos攻擊來源。


各階段如何排查避免安全隱患?

1、開發(fā)和測試階段

? ? 在實際開發(fā)中,各種功能點五花八門,未必能考慮的全面,盡量使用廣泛驗證過的工具、類庫,不管時來自JDK自身,還是Apache等第三方組織,都在社區(qū)的反饋下持續(xù)地完善代碼安全;

? ? 開發(fā)過程中應(yīng)用代碼規(guī)約標準,是避免安全問題的有效手段;

? ? 在早期設(shè)計階段,就由安全專家組對新特性進行風(fēng)險評估;

? ? 開發(fā)過程中,尤其是code review階段,應(yīng)用OpenJDK自身定制的代碼規(guī)范;

? ? 利用多種靜態(tài)分析工具如Findbugs、Parfait等,幫助早期發(fā)現(xiàn)潛在安全風(fēng)險,并對相應(yīng)問題采取零容忍態(tài)度,強制要求解決;

? ??


部署階段

? ? JDK自身也是個軟件,難免會存在實現(xiàn)瑕疵,我們看到JDK更新的安全漏洞補丁,其實就是在修補這些漏洞,大多數(shù)存在序列化相關(guān)漏洞問題都是因為使用的JDK版本較低,可以通過部署解決問題;

? ? 如果是安全敏感型產(chǎn)品,建議關(guān)注JDK在加解密方面的路線圖,同樣的標準也應(yīng)用于其他語言和平臺,很多早期認為非常安全的算法,已經(jīng)被攻破,及時地升級基礎(chǔ)軟件是安全的必要條件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • 突然想到一個問題?十年后的我會過什么樣的生活? 時間就是快,不知不覺在服裝行業(yè)干了十年,沒有存款,只是養(yǎng)大了兩個孩...
    廣西韻格閱讀 197評論 0 1
  • 冬天剛來不太久,女孩和很呱呱墜地的小嬰兒如滑過天空的流星一般突然降生了。 還不會走路的時候,女孩看到眼...
    虎皮花卷閱讀 203評論 0 0
  • 今天看完這部電影,日本2008年拍的,看完之后覺得無話可說卻又覺得百感交集卻無法盡數(shù)表達出來。 兩個天才之間的無息...
    港島一閱讀 316評論 0 0

友情鏈接更多精彩內(nèi)容