2012-02-27 10 views
2

私はDBとの対話にJPA2.0のEclipseLink)を使用していると私はいくつかのDBの構成を有しているpersistence.xmlファイルを持っています。私はDBにアクセスするために使用されるパスワードをあいまいにしたい。私はEclipse IDEを使用しています。次の設定タグは、persistence.xmlファイルで使用されています。データベースのパスワードを隠す方法は?

<property name="javax.persistence.jdbc.user" value="app"/> 
<property name="javax.persistence.jdbc.password" value="password"/> 

私はここxmlでパスワードを言及する必要はありません。それについてどうすればいいですか?

注:私のアプリケーションは、ApacheのDerbyを持つSwing 埋め込み DBで構成されています。

答えて

2

サーバーにパスワードを保存させてから、JNDIを使用して取得することができます。

パスワードを暗号化してクライアントで復号化することもできます。これはディクショナリ攻撃やプログラムを逆コンパイルすることによってプロセスをまっすぐに逆戻りさせてしまう可能性があります。

+0

OPのアプリケーションがアプリケーションサーバー、または任意のjndiプロバイダーで実行される場合、その答えは正しい方法です。 – Kent

+0

ああ!ごめんなさい!私は組み込みDBを使用していることを忘れていました。 – Ahamed

+0

@Ahamed、私は本当に*方法を見ていない*。暗号化されているかどうかにかかわらず、クラスファイルに静的に設定することで、それを少し隠すことができます。 –

0

通常、このシナリオでは、ハッシュをXMLファイルに保存し、バックエンドでハッシュが一致することを検証します。

あなたは次の擬似コードのような何かを行うことができるはず:

String password = property.getParam(password); 
String user = property.getParam(user); 

function validateHash(String unhashedPassword, String unhashedUser) 
{ 
    String passHash = generateMD5(unhashedPassword); 
    String userHash = generateMD5(unhashedUser); 

    if(!password.equals(passHash) && !user.equals(userHash) 
    { 
     throw new SecurityException("Oh noez hackstar"); 
    } 
} 

長い1は、使用するハッシュアルゴリズムを中心に議論、MD5について悪い何も限り、あなたはないのでありません原子力発射コードを保護しようとしている。

+0

もちろん、通常はデータベースに接続しようとしているときは表示されません。 –

+0

@JohanSjöberg実際には、データベースに接続するとうまく動作します。あなたはハッシュされた信用証明書を保管しないので、このプロセスは問題ありません。平文パスワードを保存している場合は、すぐにそれを変更してください。基本的にデータベースは気にしません。特に私のユーザ名がcatで、パスワードが「awesome」のパスワードのMD5ハッシュである場合は、 – Woot4Moo

+0

となります。しかし、私が意味していたのは、プレーンテキストのパスワードは、文字列としてプログラムに格納されなければならないということでした。これは、やや不明瞭ですが、安全ではありません。 –

関連する問題