ホームページ  >  に質問  >  本文

PHPのpassword_hashを使用したパスワードのハッシュ化と検証のステップバイステップガイド

最近、私はインターネットで偶然見つけたログイン スクリプトに独自のセキュリティを実装しようとしています。ユーザーごとにソルトを生成する独自のスクリプトを作成する方法を習得するのに苦労した後、password_hash を見つけました。

私が理解したところによると (このページを読んだことに基づいて)、password_hash を使用すると、その行にソルトがすでに生成されています。これは本物です?

私のもう一つの質問は、塩を 2 種類用意した方が賢明ではないでしょうか。 1 つはファイルに直接、もう 1 つはデータベースにありますか?これにより、誰かがデータベース内のソルトを破損した場合でも、ソルトをファイルに直接保存できますか?ここで、塩を保管するのは決して賢明な考えではないと読みましたが、人々がそれを何を意味するのかいつも混乱します。

P粉052724364P粉052724364392日前741

全員に返信(2)返信します

  • P粉563831052

    P粉5638310522023-10-14 20:19:57

    はい、正しく理解できましたね。password_hash() 関数はそれ自体でソルトを生成し、生成されたハッシュ値にソルトを含めます。ソルトが機能することがわかっている場合でも、ソルトをデータベースに保存することは絶対に正しいです。

    リーリー

    あなたが言及した 2 番目のソルト (ファイルに保存されているもの) は、実際にはペッパーまたはサーバー側のキーです。ハッシュする前に(塩と同じように)コショウを加えると、コショウを加えることになります。ただし、より良い方法があります。最初にハッシュを計算し、次にサーバー側のキーを使用してハッシュを暗号化する (両方の方法) ことができます。これにより、必要に応じてキーを変更できます。

    ソルトとは対照的に、このキーは秘密にしておく必要があります。よく混同して塩を隠そうとする人がいますが、塩に役割を果たしてもらい、秘密をキーで追加する方が良いでしょう。

    返事
    0
  • P粉138711794

    P粉1387117942023-10-14 00:32:17

    パスワードを保存するには、password_hash を使用することをお勧めします。データベースとファイルに分けないでください。

    次の入力があるとします:

    リーリー

    まず、次の手順を実行してパスワードをハッシュします:

    リーリー

    次に、出力を表示します:

    リーリー

    ご覧のとおり、ハッシュ化されています。 (以下の手順を実行したと仮定します)。

    ここで、このハッシュされたパスワードをデータベースに保存します。 パスワード列がハッシュ値を収容できる十分な大きさであることを確認してください (少なくとも 60 文字以上) 。ユーザーがログインを要求した場合、次のようにデータベース内のハッシュを使用して、入力されたパスワードを確認できます。 リーリー

    公式リファレンス

    返事
    0
  • キャンセル返事