Java SE安全編碼準則

Java SE安全編碼準則 

針對Java SE 13更新的
文檔版本:7.3
發佈:2018年9月27日
最近更新:2019年9月23日

 

介紹

Java平臺的主要設計考慮因素之一是爲執行具有不同權限級別的代碼提供受限制的環境。Java帶有其自身獨特的一組安全挑戰。儘管Java安全體系結構[1] 在許多情況下可以幫助保護用戶和系統免受惡意代碼或行爲不當的攻擊,但它無法防禦可信任的情況下發生的實現錯誤。碼。這些錯誤可能會無意中打開安全體系結構設計要包含的漏洞。在嚴重的情況下,可能會執行本地程序或禁用Java安全性。這些錯誤可能會被用來從計算機和Intranet竊取機密數據,濫用系統資源,阻止計算機的有用操作,協助進一步的攻擊以及許多其他惡意活動。

語言系統的選擇會影響任何軟件程序的健壯性。Java語言[2]和虛擬機[3] 提供了許多功能來減輕常見的編程錯誤。該語言是類型安全的,運行時提供了自動內存管理和數組邊界檢查。Java程序和庫會盡早檢查非法狀態。這些功能還使Java程序具有很高的抵抗堆棧 破壞[4]的能力,並且可以在C語言和較小程度上的C ++編程語言中實現緩衝區溢出攻擊。Java的顯式靜態類型使代碼易於理解(並促進了靜態分析),並且動態檢查可確保意外情況導致可預測的行爲。

爲了最大程度地減少由程序員錯誤引起的安全漏洞的可能性,Java開發人員應遵守推薦的編碼準則。現有的出版物,例如有效的Java [6],提供了與Java軟件設計相關的出色指南。其他,例如軟件安全性: [7]中的安全性構建,概述了軟件安全性的指導原則。本文檔將這些出版物聯繫在一起,並涵蓋了其他主題。它針對Java編程語言提供了一套更完整的特定於安全性的編碼準則。這些準則對於所有Java開發人員都是有意義的,無論他們創建受信任的最終用戶應用程序,實現安全組件的內部還是開發執行常規編程任務的共享Java類庫。任何實施錯誤都可能導致嚴重的安全後果,並可能出現在軟件堆棧的任何層中。

儘管第0至3節通常適用於不同類型的軟件,但第4至9節中的大多數準則都側重於與不受信任的代碼進行交互的應用程序(儘管這些節中的某些準則仍與其他情況有關)。開發人員應分析跨應用程序信任邊界發生的交互,並確定涉及的數據類型,以確定哪些準則相關。執行威脅建模和建立信任邊界可以幫助完成此任務(請參閱準則0-4)。

這些準則旨在幫助開發人員構建安全軟件,但它們並不特別關注於實現安全功能的軟件。因此,本文檔未涵蓋諸如密碼學之類的主題( 有關在Java上使用密碼學的信息,請參見[9][10])。雖然向軟件添加功能可以解決一些與安全性相關的問題,但不應依賴於消除安全性缺陷。

本文檔已更新,以涵蓋Java SE 11中包含的一些新功能。但是,這些準則也適用於爲Java早期版本編寫的軟件。

......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章