1

Java アプリケーションの開始時に、ユーザーにユーザー名とパスワードを入力してもらいます。これらの資格情報は、アプリケーションが Web サービスに対してクエリを実行するときに使用される ConnectionKey オブジェクトに格納されます。各クエリには、有効なユーザー名とパスワードが必要です。また、これらのクエリは、アプリケーションの存続期間全体にわたって実行されます。

現在、ユーザーのパスワードを単純な文字列として ConnectionKey に保存しています。私はこれが非常に安全でないことを知っており、ある種の暗号化によってこれをより安全にしたいと考えています. ただし、この Web サービスにクエリを実行するには、元のユーザー パスワードを取得できる必要があります。

  • アプリケーション全体でこのパスワードを引き続き使用しながら、ユーザーパスワードを安全に保存するにはどうすればよいですか?

ありがとう!

編集

ConnectionKey は単純に次のようなクラスです。

class ConnectionKey {

    private final String user;
    private final String pass;
    private final String server;

    public ConnectionKey(String user, String pass, String server) {
         this.user = user;
         this.pass = pass;
         this.server = server;
    }

}
4

1 に答える 1

0

まず、SO に関する次の質問を読んでいると確信しています。 これは、単純なパスワードを持っている場合、少なくともそれが String ではなく char[] であることを意味します

それ以外に、ユーザーのパスワードを安全に保管するには、よく知られた、十分にテストされた (通常は一方向の) 暗号化アルゴリズムを使用してパスワードを暗号化する必要があります。

これは、あなたが尋ねた内容と ConnectionKey の使用方法と矛盾する可能性がありますが、問題は簡単にパスワードを暗号化し、パスワードが使用される API/メソッドを変更することです。

たとえば、サーバー側で ConnectionKey を検証しようとしている場合は、そのメソッドを暗号化されたパスワードで動作するように変更します。つまり、既知のパスワードに同じ暗号化アルゴリズムを使用し、それを受信した暗号化されたパスワードと比較します。

于 2013-04-04T22:13:30.583 に答える