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

PHPのpassword_hashを使用してパスワードをハッシュし検証する方法

<p>最近、インターネットで偶然見つけたログイン スクリプトに独自のセキュリティを実装しようとしています。ユーザーごとにソルトを生成する独自のスクリプトを作成する方法を習得するのに苦労した後、<code>password_hash</code> を見つけました。 </p> <p>(このページを読んでいると)私が理解しているように、<code>password_hash</code> を使用すると、その行にソルトがすでに生成されています。これは本物です? </p> <p>もう一つの質問は、塩を 2 種類用意した方が賢明ではないでしょうか? 1 つはファイルに直接、もう 1 つはデータベースにありますか?これにより、誰かがデータベース内のソルトを破損した場合でも、ソルトをファイルに直接保存できますか?ここで、塩を保管するのは決して賢明な考えではないと読みましたが、人々がそれを何を意味するのかいつも混乱します。 </p>
P粉898107874P粉898107874446日前431

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

  • P粉555682718

    P粉5556827182023-08-25 00:55:35

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

    リーリー

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

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

    返事
    0
  • P粉377412096

    P粉3774120962023-08-25 00:34:19

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

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

    リーリー

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

    リーリー

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

    リーリー

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

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

    公式リファレンス

    返事
    0
  • キャンセル返事