web-dev-qa-db-ja.com

Java-アプリケーションで使用されるパスワードを保存するには?

データベースからデータを読み取るアプリケーションを開発しています。データベースへの接続は、標準のログイン/パスワードメカニズムを介して実行されます。

問題は、dbパスワードを保存する方法ですか?クラスメンバーとして保存すると、逆コンパイル操作で簡単に取得できます。

文字列のパスワードは難読化されたコードでも簡単に見つけることができるため、難読化は問題を解決しないと思います。

誰にも提案がありますか?

27
Mauri

パスワードをコードにハードコーディングしないでください。これは最近 Top 25 Most Dangerous Programming Mistakes で取り上げられました

秘密のアカウントとパスワードをソフトウェアにハードコーディングすることは、熟練したリバースエンジニアにとって非常に便利です。パスワードがすべてのソフトウェアで同じ場合、必然的にそのパスワードが知られるようになると、すべての顧客が脆弱になります。また、ハードコーディングされているため、修正するのは非常に苦痛です。

パスワードなどの構成情報は、アプリケーションの起動時に読み取る別のファイルに保存する必要があります。これが、逆コンパイルの結果としてパスワードが漏洩するのを防ぐ唯一の本当の方法です(最初にバイナリにコンパイルしないでください)。

詳細な説明については、この素晴らしい回答を参照してください。 By William Brendel

21
COD3BOY

他の多くのセキュリティ対策を必要としない小規模でシンプルなアプリの場合、これはおそらく構成オプションです。アプリケーションをデプロイすると、データベース接続プロパティが指定されている構成ファイルを読み取ることができます。これは、アプリケーション自体がパスワードを知らないことを意味しますが、パスワードを見つけるにはサーバーにアクセスする必要があります。

1
Albin

一部のデータは構成可能でなければなりません。あなたが言ったように、それはusernamepasswordか、いくつかの一般的なdatasかもしれません。通常、プロパティ設定ページを作成します。以前はXMLファイルを使用していましたが、password/usernameいくつかのencrypted形式。 XMLを簡単に解析して、接続用のパスワードを取得できます。

これにより、パスワードをいつでも変更できる信頼性が確保されます。これはパスワードのみを指すのではありません。ただし、使用するデータは随時設定されます。

1
Kris