ホームページ >データベース >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 のユーザー名とパスワードを逆コンパイルから保護する方法

問題:

Java .classファイルは簡単に逆コンパイルできます。コード内でログイン資格情報を利用する必要がある場合、データベースをどのように保護できますか?

答え:

パスワードをコードにハードコーディングしないでください。これは最近、「最も危険なプログラミングの間違いトップ 25」で強調されました:

「秘密のアカウントとパスワードをソフトウェアにハードコーディングすることは、熟練したリバース エンジニアにとって非常に便利です。パスワードがソフトウェア全体で一貫している場合は、さらに、パスワードがハードコーディングされているため、解決するのが非常に面倒です。」

設定情報。パスワードは、アプリケーションが初期化時に読み取る別のファイルに保存する必要があります。これは、逆コンパイルによるパスワードの漏洩を防ぐ唯一の正しい方法です (最初からパスワードをバイナリにコンパイルしないでください)。

解決策:

Java の場合、簡単な解決策は、ユーザー名やユーザー名などのさまざまなプログラム設定を保存するように設計された Preferences クラスを使用することです。

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
}

このコードでは、setCredentials メソッドは、入力用のダイアログを表示した後にユーザー名とパスワードを設定します。データベースに接続するとき、getUsername メソッドと getPassword メソッドは保存されている値を取得します。認証情報はバイナリにハードコーディングされていないため、逆コンパイルによって生じるセキュリティ リスクが軽減されます。

重要な注意事項:

  • プリファレンス ファイルはプレーン テキストの XML ファイルです。権限のないユーザーがアクセスできないようにします (UNIX および Windows の権限など)。
  • 正しいアーキテクチャはアプリケーションのコンテキストによって異なります。ユーザーが資格情報を知っている (そして知る権限がある) 場合、上記の解決策は機能します。ただし、認証情報をユーザーから隠そうとする場合は、中間層でユーザーを認証し、制限された操作を許可する多層アーキテクチャをお勧めします。
  • 多層アーキテクチャでは、ユーザーは認証用に独自の認証情報を持ちます。ビジネス ロジック層ではありますが、データベースではありません。したがって、クライアント アプリケーションがデータベースに直接接続することはありません。

以上がJava コード内の MySQL 認証情報を逆コンパイルから保護するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。