パスワードハッシュについて読んでいます。私は本当にphpが得意ではありません。ここにあるように、Taylor Hornby のパスワード ハッシュ関数の使用方法を誰か教えてもらえますか?
3 に答える
リンク先のクラスは、パスワードをハッシュするための優れたアルゴリズム (PBKDF2) を実装していますが、PHP でのそのような実装には大きな問題があります。
パスワードの適切なハッシュ アルゴリズムには、ハッシュ値の計算に必要な時間を制御できるコスト ファクターが含まれます。コスト値が高いほど、ハッシュのラウンド数が多くなります。PHP はネイティブの C 実装よりも遅く、ログインを数秒も待ちたくないため、ハッシュの回数を減らすことができます。これはパスワード ハッシュを弱体化させます。その場合、GPU を使用できるクラッカー ツールが大きな利点となります。
そのため、PHP はBCrypt アルゴリズムのネイティブ実装password_hash()を提供しています。
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
リンクされた実装が適切に行われているように見える場合でも、代わりにこの関数を使用してください。
最初に PHP ファイルをインクルードします。その方法については、こちら を参照してください。また、使用するハッシュ関数に合わせてファイルをカスタマイズする必要があります。sha256 は良い選択です。
次に、パスワードを使用して関数を実行しcreate_hash
、返された値をデータベースに保存します。
パスワードを確認するにはvalidate_password
、データベースからのハッシュとユーザーが入力したパスワードを使用して関数を実行します。使用する必要のない他の 2 つの関数は、必要なすべてのパラメーターを指定しvalidate_password
てcreate_hash
実行します。
暗号化は複雑で混乱を招く可能性があるため、パスワードなどの機密情報を保存する前にセキュリティについて少し読むことをお勧めします。これを誤って設定すると、パスワードが安全に保存されない可能性があるためです。このページでは、パスワードを安全に保管する方法に関する技術的な詳細を説明します。