1

小さなプロジェクトを作成するために Java フレームを使用しています。ログイン フレームで、ユーザーからユーザー名とパスワードを受け取ります。有効性を確認した後、このユーザー名とパスワードを別のフレームのコンストラクター (UserFrame と呼ばれる) に渡す必要があります。文字列として渡していますが、安全ではないようです。Javaであるフレームから別のフレームにパスワードを渡す良い方法はありますか?

String user=userField.getText();
String pwd= passField.getText();
if (user.equals("username") && pwd.equals("password"))
      Home x= new Home(user,pwd);
4

4 に答える 4

1

JPasswordField#getPassword()が返されるので、与えられたとおりにパスワードを処理できることに注意しchar[]てください (JPasswordField を使用していると仮定します): char の配列として。それか、何らかの形でハッシュして、ハッシュコードを渡します。


あなたの状態を編集
:

はい、JPasswordField を使用しています。ただし、文字列を返すため、簡単にするために getText() を使用しました。文字配列は、あるフレームから別のフレームに渡されるときに、文字列よりも追加のセキュリティを保証しますか?

getText()質問をしているというまさにその理由で使用しないでください。パスワードを文字列として扱うべきではありません。これにより、発見が容易になります。getText()JPasswordField クラスの API を見ると、まったく同じ理由で非推奨になっていることがわかります。原則として、非推奨のメソッドは使用しないでください。


編集2 あなたは次のように述べています:

Ok。今、私はそれを理解しています。しかし、あるフレームから別のフレームにパスワードを渡すにはどうすればよいでしょうか。char[] を渡すとセキュリティが保証されますか?

私の知る限り、セキュリティを保証するものは何もありませんが、パスワードを char 配列として処理するとセキュリティが向上します。char[] コンストラクター パラメーターまたは char[] パラメーターを受け取るセッター メソッドを使用します。

于 2013-08-10T16:59:57.287 に答える
1

passField.getText() は非推奨なので、使用はお勧めしません。代わりに、次のように passField.getPassword() を使用してみてください。

String pwd= new String(passField.getPassword());
于 2013-10-11T01:54:49.627 に答える
0

getPassword() メソッドが利用可能です。ただし、このメソッドの戻り値の型は char 配列です。これを String に変換したい場合があります。

char a[]= jPasswordField1.getPassword();
 String pswd = new String (a);

または単に、

String pswd= new String (jPasswordField1.getPassword());

id,pswd を他のフレーム コンストラクターに次のように渡します。

new JFrame2(id,pswd);
于 2013-08-10T17:06:01.310 に答える