2

ユーザーログインを検証するとき、最初にユーザー名を検索し、見つかった場合は、ハッシュされたパスワードとソルトを取得してユーザー入力と比較しても安全ですか?

または、ユーザーが入力したユーザー名のソルトを単独で取得し、入力したパスワードでハッシュして、データベース内の最終ハッシュと比較する必要がありますか?

本質的に、ユーザーが入力したパスワードが有効かどうかを知る前に、入力されたユーザー名のパスワードをデータベースから保存しても安全ですか?

4

2 に答える 2

2

PHP Password Hashing API https://github.com/ircmaxell/password_compatの例を見ると、答えは次のとおりです。いいえ、データベースからユーザーを読み取り、保存されているパスワード ハッシュと、ログインフォーム。

このライブラリを使用してみてください - PHP 5.5 は関数をネイティブにサポートします。PHP 5.3.7 以降を使用している場合は、車輪を再発明せずにこれらの関数を使用することをお勧めします。独自のことを行うことは、攻撃される可能性が高くなります。

于 2013-01-08T20:50:10.350 に答える
1

ログイン名とパスワードの両方を同時に確認できます。生のパスワードを取得します。それをソルトし、ソルトされたパスワードとユーザー名の組み合わせが存在するかどうかを確認します。もちろん、db のパスワードは以前にソルト化およびハッシュ化されているはずです。

 if($loginname AND $loginpass){
  $loginpass=sha1($salt1.$loginpass.$salt2,$raw_output=false );

    $userinfo_query="SELECT * FROM users WHERE user_name='$loginname' AND user_pass='$loginpass' LIMIT 1";

  }
于 2013-01-08T20:47:20.053 に答える