首頁 > Java > java教程 > 保護 Java 中的敏感資料:最佳實踐和編碼指南

保護 Java 中的敏感資料:最佳實踐和編碼指南

Barbara Streisand
發布: 2025-01-16 12:12:58
原創
609 人瀏覽過

Securing Sensitive Data in Java: Best Practices and Coding Guidelines

本文強調了保護 Java 應用程式中敏感資料的關鍵作用,並強調了普遍存在的漏洞,包括有缺陷的資料處理、注入攻擊和不充分的輸入驗證。 它介紹了 Oracle 的安全編碼最佳實踐,並透過不安全和安全編碼技術的範例進行了說明。

敏感資料包含個人和組織努力防止未經授權的披露的信息,因為其意外洩露或盜竊可能會導致重大損害,例如身份盜竊或其他犯罪活動(Baig,2021)。 這包括個人的個人詳細資料(付款資訊、出生日期)和組織的專有資訊。

雖然 Java 提供了固有的安全機制,但資料處理不當、容易受到注入攻擊、輸入驗證不足以及可變物件的不安全管理可能會導致漏洞。

Java 所有者 Oracle(日期不詳)為 Java SE 提供全面的安全編碼指南。主要指南包括:

- 準則 2:機密資訊(Oracle,n.d.)

  • 準則 2–1 / CONFIDENTIAL-1:避免在例外情況下洩漏敏感資訊。 異常不應暴露內部狀態或檔案路徑。
  • 指南 2–2 / CONFIDENTIAL-2:避免記錄高度敏感的資訊。 日誌必須排除密碼或安全性令牌等敏感資料。
  • 指南 2-3 / CONFIDENTIAL-3:考慮在使用後從記憶體中刪除高度敏感的資訊。 這可以最大限度地減少潛在的暴露窗口。

敏感資料的不安全記錄或儲存會顯著增加未經授權存取的風險。

程式碼範例:

不安全代碼:以純文字形式記錄使用者密碼違反了安全編碼原則。

<code class="language-java">public class PasswordLogger {
    public void logPassword(String password) {
        // Logs sensitive data—violates secure coding guidelines
        System.out.println("Password: " + password);
    }
}</code>
登入後複製
登入後複製

安全代碼: 應從日誌中刪除或封鎖敏感資料。

<code class="language-java">public class SecurePasswordLogger {
    public void logPassword() {
        System.out.println("Password logging is not permitted.");
    }
}</code>
登入後複製

- 準則 3:注入與包含(Oracle,n.d.)

  • 指南 3-1 / INJECT-1:確保正確的輸入格式。 清理所有輸入以防止格式錯誤。
  • 準則 3–2 / INJECT-2:避免動態 SQL。使用參數化 SQL 查詢來緩解 SQL 注入漏洞。

這些漏洞使攻擊者能夠操縱查詢並破壞敏感資料。

程式碼範例:

不安全的程式碼:使用未經清理的動態 SQL 是有風險的。

<code class="language-java">String query = "SELECT * FROM users WHERE username = '" + username + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);</code>
登入後複製

安全程式碼:參數化查詢可防止注入攻擊。

<code class="language-java">String query = "SELECT * FROM users WHERE username = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();</code>
登入後複製

- 準則 5:輸入驗證(Oracle,n.d.)

  • 指南 5–1 / INPUT-1:驗證所有輸入。 清理和驗證來自不受信任來源的資料。
  • 準則 5–2 / INPUT-2:在進一步處理之前重新驗證來自不受信任來源的輸出。

不正確的輸入驗證允許攻擊者註入惡意程式碼或存取受限資料。

程式碼範例:

安全程式碼:輸入驗證可防止惡意程式碼注入。

<code class="language-java">public class PasswordLogger {
    public void logPassword(String password) {
        // Logs sensitive data—violates secure coding guidelines
        System.out.println("Password: " + password);
    }
}</code>
登入後複製
登入後複製

總之,保護敏感資料至關重要。 不當的資料處理、注入漏洞和不充分的輸入驗證可能會嚴重損害應用程式的安全性。 透過遵守安全編碼準則(避免敏感資料記錄、採用參數化 SQL 查詢、驗證所有輸入以及正確管理可變物件),開發人員可以建立健全、安全的 Java 應用程式。


參考文獻:

Baig, A.(2021 年,5 月 17 日)。 什麼是敏感資料? Securiti。 https://www.php.cn/link/1d1f05e59ddfa82248f422b49a72c2b3

甲骨文(日期不詳)。 Java SE 的安全編碼指南。 2023 年 5 月更新。 Oracle。 https://www.php.cn/link/9565d975e952ec21ae8131e05130036c


最初由 Level UP Coding 於 2024 年 11 月 14 日在 Medium 上的 Alex.omegapy 上發布。

以上是保護 Java 中的敏感資料:最佳實踐和編碼指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板