提高java程式設計安全性的12條黃金法則
安全性是軟體開發中最複雜,最廣泛和最重要的考量之一。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訪問來隔離程式。縮小對應用程式的這些資源的過度佔用,可以減少攻擊可能造成的危害。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2704189/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 有效提高java程式設計安全性的12條黃金法則Java程式設計
- 提高遊戲留存的14條黃金法則遊戲
- 客服系統的七條黃金法則
- Keras作者:給軟體開發者的33條黃金法則Keras
- 谷歌機器學習規則要點簡析:43條黃金法則谷歌機器學習
- 提升首頁激勵視訊廣告收益的四條“黃金法則”
- 分析資料分析的幾大黃金法則
- 雙均線策略:量化交易中的黃金法則
- 他說,程式設計的黃金時代已到程式設計
- 經驗分享:Java程式設計師的黃金5年你如何突破?Java程式設計師
- 選擇遠端辦公軟體的黃金法則
- 專案經理需要了解的黃金圈法則
- JAVA程式設計師“黃金5年”必須要掌握的知識技能Java程式設計師
- 併發程式設計的12條規範程式設計
- 自媒體運營方法——追熱點,熱點創作的12小時黃金法則
- 寶鯤財經:外匯投資的7條黃金準則
- 程式設計師的4條說法程式設計師
- 線上公開課 | 監控與日誌的黃金法則
- Java程式設計師的黃金5年,你還在擔心技術瓶頸嗎?Java程式設計師
- 編寫高質量程式碼的50條黃金守則-Day 02(首選readonly而不是const)
- Java的SOLID程式設計原則 - Filippo BulettoJavaSolid程式設計
- 提高網站安全性的12種基本方法網站
- Goldie for Mac(黃金比例設計工具)GoMac
- 黃金比例設計工具:Goldie for MacGoMac
- ios程式設計師提高程式設計能力萬無一失的辦法iOS程式設計師
- 軟體開發的22條法則 ——《程式設計師修煉之道》讀書筆記程式設計師筆記
- 麥肯錫教我的資料科學家的五大黃金法則資料科學
- 遊戲設計的11條原則遊戲設計
- [譯] 設計研究的 9 條規則
- Codd的ER模型12條規則模型
- 編寫高質量程式碼的30條黃金守則-Day 01(首選隱式型別轉換)型別
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 互動設計法則
- c++四則運算結對程式設計 2252416 黃子軒C++程式設計
- 科學軟體十條簡單程式設計原則程式設計
- 都是血淚,程式設計師傍身的生存法則(上)程式設計師
- 雲架構儉約之道:企業架構七大黃金法則架構
- 好程式設計師Java培訓分享Java設計模式的六大原則程式設計師Java設計模式