1

だから私はPHPとMysqlについてかなり学んでいて、何か疑問に思っていました. ユーザー名とパスワードだけを格納するデータベースを作成するとします (例は単純にします)。誰かがデータベースにハッキングする可能性があるため、暗号化せずにパスワードを保存するのは安全ではないことはわかっています。
そのため、MD5 ハッシュまたはさらに安全なものを使用してパスワードを暗号化して保存すると、ユーザーの 1 人がログイン情報を忘れてしまい、電子メールで取得したいと考えています。

MD5 またはそれ以上の暗号化方式を使用している場合、パスワードが暗号化されていて復号化できない場合、ユーザーにログイン情報を送信するにはどうすればよいですか?
この目的のために(つまり、取得部分を意味します)、このためだけにパスワードが保存される別の方法、または少なくとも別の場所があると思いますか?

この情報を安全に保存する方法を誰かが提案してくれるとうれしいですが、ユーザーの 1 人がログインを忘れた場合に安全にメールで返信する方法があります。または、このような問題は現在どのように処理されていますか?
そして、私が読んだことから、MD5ハッシュはすでにハッキングされているので、より良い暗号化ハッシュまたは方法もいいでしょう.

4

5 に答える 5

5

次に、パスワードが暗号化されていて、それを解読する方法がない場合、ユーザーにログイン情報を送信するにはどうすればよいですか?

あなたはそうではありません。ユーザーのパスワードを送信しないでください。

ユーザーがパスワードをリセットしたい場合:

  1. ランダムなトークンを生成する
  2. そのトークンをタイムスタンプとユーザーIDとともにデータベースに保存します
  3. トークンをユーザーに電子メールで送信する
  4. ユーザーがトークンを使用してページにアクセスしたときに、新しいパスワードの入力を許可する
  5. トークンは使用後に削除する
  6. トークンが一定期間 (例: 3 時間) 使用されていない場合は、トークンを削除します。

そして、私が読んだことから、MD5ハッシュはすでにハッキングされているため、より良い暗号化ハッシュまたは方法があればいいでしょう.

PHP マニュアルを参照してください。これは FAQです。

OWASPも参照

于 2012-10-16T13:08:01.147 に答える
1

パスワードを簡単に解読できる場合は、他の人もこれを行うことができ、システムは保証されます

より良いアプローチは、ユーザーの要求に応じて新しいパスワードを生成し、ランダムな文字列を使用してパスワードを更新し、ユーザーが更新した(暗号化されていない)パスワードをメールで送信し、暗号化 (md5 など) 後にデータベースに保存することです... できる次の方法を使用してランダムなパスワードを生成します

<pre>
  <?php
    $randstr = "";
         for($i=0; $i<10; $i++)
           {
            $randnum = mt_rand(0,61);
             if($randnum < 10)
             $randstr .= chr($randnum+48);
             else if($randnum < 36)
                  $randstr .= chr($randnum+55);
             else
                  $randstr .= chr($randnum+61);
          } 
     $original_pass=$randstr;  //Send it via E-mail
     $encrypted_pass=md5($randstr); //Store it in Database 
      ?>

最初の 3 文字に md5 を使用し、次の 2 文字に sha1 を使用し、次の 2 文字に別の暗号化アルゴリズムを使用して、異なる暗号化アルゴリズムの組み合わせを使用し、ユーザーを少なくとも 6 文字以上のパスワードに制限することもできます。 ただし、いくつかの暗号化アルゴリズムがあり、秘密鍵を提供することでそれらを復号化に使用できますが、その秘密鍵を知っている他の人もそれらを復号化します...

秘密鍵を暗号化してデータベースに保存し、他の鍵を介して秘密鍵を復号化した後、それを使用してパスワードを復号化することもできます....しかし、処理時間が長くなり、時間の複雑さの問題が発生します.

于 2012-10-16T13:19:19.737 に答える
1

まず、MD5 を使用しないでください。少し前に投稿したこの質問を読んでください。多くの役立つリンクが含まれていますランダムソルトでパスワードハッシュを改善する

次に、ユーザーのパスワードをハッシュする場合 (これを強くお勧めします)、パスワードを送り返すことはできません。パスワードのリセット リンクを送信し、新しいパスワードを設定できるようにします。それはそれと同じくらい簡単です。

于 2012-10-16T13:06:30.653 に答える
0

ランダムなパスワードを作成して、そのパスワードをアクティブ化するアクティブ化リンクを送信するだけです。

パスワードが単純すぎる場合は、md5の文字列を提供できるオンラインツールが多数あるため、md5以外のものを使用するか、ソルトなどを使用してmd5を使用することをお勧めします。ちなみに、ソルトは基本的に、パスワードに追加して取得を困難にするキーのセットです。

于 2012-10-16T13:10:29.730 に答える
0

パスワード自体ではなく、パスワードのハッシュを保存することで、正しい方向に進んでいると思います。

彼らがそれを忘れた場合、ハッシュしか持っていないため、パスワードが記載された画面を表示できないことに同意します. ただし、パスワードをリセットできるページにリンクする電子メールを送信することはできます。

于 2012-10-16T13:06:37.337 に答える