首頁 >資料庫 >mysql教程 >如何保護 Java 程式碼中的 MySQL 憑證免於反編譯?

如何保護 Java 程式碼中的 MySQL 憑證免於反編譯?

Linda Hamilton
Linda Hamilton原創
2024-12-17 19:51:12159瀏覽

How to Secure MySQL Credentials in Java Code Against Decompilation?

如何保護MySQL 使用者名稱和密碼不被反編譯

問題:

問題:

問題:

問題:

問題:

問題:
import java.util.prefs.Preferences;

public class DemoApplication {
  Preferences preferences = Preferences.userNodeForPackage(DemoApplication.class);

  public void setCredentials(String username, String password) {
    preferences.put("db_username", username);
    preferences.put("db_password", password);
  }

  public String getUsername() {
    return preferences.get("db_username", null);
  }

  public String getPassword() {
    return preferences.get("db_password", null);
  }

  // your code here
}

問題:

    問題:
  • 問題:
答案:切勿將密碼硬編碼到代碼中。最近在「25個最危險的程式錯誤」中強調了這一點:「將秘密帳戶和密碼硬編碼到您的軟體中對於熟練的逆向工程師來說非常方便。一致,當密碼不可避免地被洩露時,每個客戶都會變得容易受到攻擊。程式在初始化時讀取的單獨檔案中。這是防止密碼因反編譯而洩漏的唯一真正方法(永遠不要將其編譯成二進位)。 解決方案:對於Java ,一個簡單的解決方案是使用Preferences 類,旨在儲存各種程式設置,包括使用者名稱和在此程式碼中,setCredentials 方法在顯示輸入對話方塊後設定使用者名稱和密碼。連接到資料庫時,getUsername 和 getPassword 方法會檢索儲存的值。憑證不會硬編碼到二進位檔案中,從而減輕了反編譯帶來的安全風險。 重要說明:首選項檔是純文字 XML 檔案。防止未經授權的使用者存取它們(UNIX 和 Windows 權限等)。 正確的架構取決於應用程式上下文。如果使用者知道(並且被授權知道)憑證,則上述解決方案有效。但是,如果試圖向使用者隱藏憑證,建議使用多層架構,其中中間層對使用者進行身份驗證並授予有限的操作。 在多層架構中,使用者擁有自己的憑證進行驗證業務邏輯層,但不是資料庫。因此,客戶端應用程式永遠不會直接連接到資料庫。

以上是如何保護 Java 程式碼中的 MySQL 憑證免於反編譯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn