1

ユーザーのグループがあります。それらのすべてが同じユーザー名とパスワードの組み合わせを持っています。私のデータベースには暗号化されたデータがあります(以下のコードを参照)。問題は、ユースケース全体を処理するための最良かつ最も安全な方法は何ですか?ユーザー名とパスワードの組み合わせをメールで送信したいのですが、すべてのユーザーに同じメールを送信します。ユーザーが電子メールを送信してからテキストパスワードを削除するよりも、パスワードをデコードするか、その期間のテキストパスワードを保存する必要がありますか、それとも何かアイデアがありますか?

私のソフトウェアにはそれほど貴重なデータはありませんが、それでも...

private Users hashPasswordBase64(Users currentUser) {

    try {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        String text = currentUser.getPassword();
        md.update(text.getBytes("UTF-8"));
        byte[] digest = md.digest();

        currentUser.setPassword(Base64.encode(digest));
    } catch (NoSuchAlgorithmException ex) {
        Logger.getLogger(UsersController.class.getName()).log(Level.SEVERE, null, ex);
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(UsersController.class.getName()).log(Level.SEVERE, null, ex);
    }
4

2 に答える 2

4

Betaminos はほとんどガイドラインを設定しました。

私が推奨するのは、サーバー側のパスワードをエンコードされた形式で保存し、誰かがその人としてログインしようとしたときにのみデコードすることです。

別のオプション (小規模なものであると仮定) は、多くのスパム文字を含む難読化されたパスワードを送信することです (例: http://pastebin.com/hT1AVMUp ) (およびここ: http://pastebin. com/9He1sk2m ) をクライアント側でデコードしてもらいます。人間に勝るものはありませんが、プログラムの解読が難しくなるはずです。

于 2012-05-30T14:24:57.237 に答える
2

オンザフライでパスワードをデコードし、電子メールを送信し、変数を破棄することをお勧めします。パスワードを保存しても、トロイの木馬がパスワードを取得しやすくなるだけです。

それに加えて、最初のログイン後にユーザーが変更する必要があるパスワードを提供することをお勧めします。このようにして、ユーザーは覚えやすいパスワードを選択することができ、1 回使用すると無効になるため、平文のパスワードを送信する際に問題が発生することはありません。

于 2012-05-30T13:53:19.460 に答える