
安全性是軟體開發中最復雜,最廣泛和最重要的考量之一,Java是具有許多內置安全性功能的開發平臺,java在長期的發展程序中,已經經過了很多高強度的安全測驗,并經常更新安全漏洞,并且Java生態系統還包括用于分析和報告安全性問題的各種工具,
但是,即使有了可靠的開發平臺,也同樣要保持警惕,應用程式開發是一項復雜的作業,漏洞會隱藏起來不易發現,程式員應該在應用程式開發的每個階段都考慮安全性,從類級別的代碼編程到API端點授權都應該被考慮在內,
以下為大家介紹的基本規則,可以為構建更安全的Java應用程式奠定良好的基礎,供參考學習!
Java安全規則1:撰寫簡單而強大的Java代碼
漏洞喜歡隱藏在復雜代碼中,因此在不犧牲功能的情況下使代碼盡可能簡單,在代碼中公開盡可能少的資訊,隱藏實施細節,支持可維護和安全的代碼,下面三個技巧將大大有助于撰寫安全的Java代碼:
- 充分利用 Java的訪問修飾符,為類,方法及其屬性宣告訪問級別,可以設為private的所有內容都應該為private,
- 避免過度使用反射和內省,在某些情況下,應該使用這種高級技術,但是在大多數情況下,您應該避免使用它們,使用反射消除了強型別化,可能會給代碼引入漏洞和不穩定性,將類名與字串進行比較容易出錯,并且很容易導致名稱空間沖突,
- 始終定義盡可能小的API和介面,解耦組件并使它們在盡可能小的區域內互動,即使您的應用程式的某個區域出現漏洞,其他區域也將是安全的,
Java安全規則2:避免使用Java自帶的序列化
序列化接受遠程輸入,并將其轉換為完全賦值的物件,它省去了建構式和訪問修飾符,并允許未知資料流成為JVM中的運行代碼,Java序列化從根本上來說是不安全的,
Oracle就有長期計劃 從Java中洗掉自帶的序列化功能,甲骨文公司Java平臺小組的首席架構師Mark Reinhold說,Java漏洞中的三分之一或更多都涉及到序列化的問題,
盡可能避免在Java代碼中使用自帶的序列化/反序列化,可以考慮使用JSON或YAML之類的序列化格式,并且永遠不要公開接收并作用于序列化流的不受保護的網路請求端點,
Java安全規則3:永遠不要公開未加密的憑證或PII
很多的應用,當用戶在瀏覽器中輸入密碼時,密碼將以純文本格式發送到您的服務器,正確的做法是:先通過單向密碼對密碼進行加密,然后再將其持久保存到資料庫中,然后在每次與該值進行比較時再次進行加密保存,
密碼規則適用于所有個人身份資訊(PII):信用卡,社會保險號等,委托給您應用程式的任何個人資訊都應得到最高程度的保護,
資料庫中未加密的憑據或PII是一個巨大的安全漏洞,正在等待攻擊者發現,同樣,切勿將原始憑據寫入日志,或以其他方式傳輸到檔案或網路,密碼與密鑰分開保存,
Java安全規則4:使用已知和經過測驗的庫
盡可能使用已知的可靠庫和框架,從密碼哈希到REST API授權,都要謹慎的選擇第三方庫,對于web應用程式安全性,Spring Security已經是事實上的標準,它提供了廣泛的選擇和靈活性,以適應任何應用程式體系結構,并且融合了多種安全方法,
Java安全規則5:不要對外部輸入抱有幻想
無論是來自用戶輸入表單,資料存盤區還是遠程API,對于任何外部輸入都不要放松警惕,
SQL注入和跨站點腳本(XSS)是由于處理外部輸入錯誤而引起的最常見攻擊,每當您收到輸入時,都應該對其進行檢查和校驗,
Java安全規則6:始終使用PreparedStatement來處理SQL引數
每當您構建一條SQL陳述句時,都有可能被插入一段可執行的SQL代碼,始終使用java.sql.PreparedStatement類創建SQL是一個好習慣,對于NoSQL存盤(如MongoDB)也存在類似的功能,絕大部分的ORM框架,都支持該功能,
Java安全規則7:不要向用戶展示服務例外資訊
生產中的服務例外資訊可以為攻擊者提供豐富的資訊來源,堆疊跟蹤尤其可以揭示有關您正在使用的技術及其使用方式的資訊,避免向最終用戶顯示堆疊跟蹤資訊,這非常重要,
Java安全規則8:使安全性發布保持最新
通過定期檢查Oracle主頁以獲取security-alerts確保知道可用的重要補丁程式 ,每個季度,Oracle都會為Java的當前LTS(長期支持)版本提供一個自動補丁更新,問題是,只有在您購買Java支持許可證的情況下,該補丁才可用,
Java安全規則9:查找依賴庫漏洞
有許多工具可以自動掃描您的代碼庫和依賴項是否存在漏洞,OWASP(開放式Web應用程式安全性專案)是致力于改善代碼安全性的組織,OWASP的值得信賴的高質量自動代碼掃描工具串列 ,包括多個面向Java的安全檢查工具,
Java安全規則10:監視和記錄用戶活動
如果您沒有積極地監視應用程式運行狀態,那么即使是簡單的暴力攻擊也可能會成功攻陷你的app,使用監視和日志記錄工具來監視應用程式的運行狀況,監視可以提醒您注意到無法被解釋的峰值,而日志記錄可以幫助您了解攻擊后出了什么問題,
Java安全規則11:當心DoS攻擊
每當要執行消耗資源的的操作(例如將壓縮檔案解壓縮)時,都應該監視資源使用量的增長,對其進行監視,并防止服務器資源過度使用,以及更多的自動化的應急回應方案,
Java安全規則12:考慮使用Java安全管理器
Java有一個安全管理器,可用于限制正在運行的行程可以訪問的資源,它可以根據磁盤,記憶體,網路和JVM訪問來隔離程式,縮小對應用程式的這些資源的過度占用,可以減少攻擊可能造成的危害,
歡迎關注我的博客,里面有很多精品合集
- 本文轉載注明出處(必須帶連接,不能只轉文字):字母哥博客,
覺得對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創作動力! ,另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注,
- 《手摸手教你學Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《實戰前后端分離RBAC權限管理系統》
- 《實戰SpringCloud微服務從青銅到王者》
- 《VUE深入淺出系列》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/144553.html
標籤:Java
上一篇:深入淺出AQS原始碼決議
下一篇:抖音用的什么資料庫
