コアポイント
password_hash()
>ハッシュアルゴリズムの名前とハッシュプロセスで使用されるさまざまなオプションを返すために使用されます。 password_verify()
password_needs_rehash()
このAPIは、デフォルトでBCRyptアルゴリズムを使用し、開発者がそれを提供する必要なく塩値の生成を自動的に処理します。ただし、開発者は、3番目のパラメーターをpassword_get_info()
関数に渡すことで、独自の塩またはコスト値を提供できます。 password_hash()
と呼ばれるライブラリを使用できます。 password_compat
- パスワードをハッシュするために使用されます。
password_hash()
password_verify()
password_needs_rehash()
password_get_info()
password_hash()
関数は私たちの作業を簡素化し、コードを安全に保つことができます。ハッシュパスワードが必要な場合は、関数に渡すだけで、データベースに保存できるハッシュ値が返されます。 crypt()
<?php $hash = md5($password . $salt); // 可行,但危险
それだけです!最初のパラメーターは、パスワード文字列を持つもので、2番目のパラメーターは、ハッシュを生成するために適用されるアルゴリズムを指定します。現在のデフォルトアルゴリズムはBCRYPTですが、将来的にはデフォルトアルゴリズムとしてより強力なアルゴリズムを追加し、大きな文字列を生成する可能性があります。プロジェクトでPASSWORD_DEFAULT
を使用している場合は、60文字以上の容量のある列にハッシュを保存してください。列サイズを255に設定するのが良いかもしれません。 2番目のパラメーターとしてPASSWORD_BCRYPT
を使用することもできます。この場合、結果は常に60文字の長さです。ここでは、塩の価値やコストパラメーターを提供する必要がないことが重要です。新しいAPIは、これらすべてを処理します。塩はハッシュの一部なので、個別に保存する必要はありません。独自の塩(またはコスト)を提供したい場合は、3番目のパラメーター(オプション配列)を関数に渡すことで実行できます。
<?php $hash = password_hash($password, PASSWORD_DEFAULT);
password_verify()
関数は、単純なテキストパスワードとハッシュ文字列をその2つのパラメーターとして取得します。ハッシュが指定されたパスワードと一致する場合、trueを返します。 password_verify()
<?php $options = [ 'salt' => custom_function_for_salt(), //编写您自己的代码以生成合适的盐 'cost' => 12 // 默认成本为 10 ]; $hash = password_hash($password, PASSWORD_DEFAULT, $options);
password_needs_rehash()
password_needs_rehash()
<?php if (password_verify($password, $hash)) { // 成功! } else { // 无效的凭据 }
password_get_info()
ハッシュを受け入れ、3つの要素を含む連想配列を返します。
password_get_info()
algo
algoName
options
新しいパスワードハッシュAPIは、 PHP 5.5パスワードハッシュAPI FAQ(FAQ)PHP 5.5パスワードハッシュAPIとは何ですか?なぜそれが重要なのですか?
PHP 5.5パスワードハッシュAPIは、PHP 5.5以降でのみ使用できます。ただし、PHP 5.3.7以降と同じ機能を提供する互換性ライブラリがあります。 はい、非ASCIIパスワードを使用してPHP 5.5パスワードハッシュAPIを使用できます。 crypt()
関数を使用するよりも使いやすいです。あなたのウェブサイトが現在PHP 5.5で実行されている場合は、新しいハッシュAPIを使用することを強くお勧めします。 PHP 5.3.7(またはそれ以降)を使用している人は、PHPバージョンが5.5にアップグレードされた後、APIをエミュレートし、自動的に無効にするpassword_compat
と呼ばれるライブラリを使用できます。 PHP 5.5パスワードハッシュAPIは、PHP 5.5以降の機能であり、開発者に安全な方法でパスワードをハッシュして検証する簡単な方法を提供します。機密性の高いユーザーデータを保護するのに役立つため、重要です。データベースがハッキングされている場合、ハッシュパスワードは、単純なテキストパスワードよりもクラックするのが難しいです。 APIは、デフォルトで強力なハッシュ関数Bcryptを使用し、塩値の生成を自動的に処理するため、開発者が安全なパスワード処理を簡単に実装できます。
機能はどのように機能しますか?
関数は、PHP 5.5パスワードハッシュAPIの一部です。プレーンテキストパスワードとハッシュアルゴリズムを入力として受信し、ハッシュパスワードを返します。また、この関数は、ハッシュする前にパスワードにランダム塩値を自動的に生成および適用します。この塩値は返されたハッシュに含まれるため、個別に保存する必要はありません。 password_hash
password_hash
関数は、ハッシュパスワードに基づいてパスワードを検証するために使用されます。プレーンテキストパスワードと入力としてハッシュパスワードを受信します。この関数は、ハッシュされたパスワードから塩の値とハッシュアルゴリズムを抽出し、それらをプレーンテキストパスワードに適用し、結果を元のハッシュされたパスワードと比較します。一致する場合、関数はtrueを返し、パスワードが正しいことを示します。 password_verify
password_verify
PHP 5.5パスワードハッシュAPIのセキュリティはどうですか? PHP 5.5パスワードハッシュAPIは非常に安全であると考えられています。デフォルトでBCRyptハッシュアルゴリズムを使用します。これは、強力なハッシュ機能です。また、APIは各パスワードにランダム塩値を自動的に生成および適用します。これにより、レインボーテーブル攻撃を防ぐのに役立ちます。ただし、すべてのセキュリティ対策と同様に、それは絶対確実ではなく、包括的なセキュリティポリシーの一部として使用する必要があります。
関数でカスタムソルトを使用できますか?
関数でカスタムソルトを使用できますが、これは推奨されません。この機能は、各パスワードのランダム塩値を自動的に生成します。これは通常、カスタムソルトよりも安全です。カスタムソルトを使用することを選択した場合、少なくとも22文字のランダムな文字列にする必要があります。 password_hash
はい、password_hash
関数のコストパラメーターは、ハッシュの計算コストを決定します。コストが高いほどハッシュがより安全になりますが、計算が遅くなります。デフォルトのコストは10です。これは、ほとんどのアプリケーションのセキュリティとパフォーマンスのバランスが取れています。
password_hash
ハッシュパスワードを再ハッシュする必要があるかどうかを確認する方法は?
password_needs_rehash
機能を使用して、ハッシュパスワードを再ハッシュする必要があるかどうかを確認できます。この関数は、ハッシュパスワード、ハッシュアルゴリズム、およびオプションのコストを入力として受信します。ハッシュパスワードが異なるアルゴリズムまたはコストで作成された場合、それは真実で返され、再ハッシュする必要があることを示します。 PHPのPHP 5.5パスワードHASH APIを使用することはできますか?
PASSWORD_DEFAULT
定数ハッシュを使用してパスワードを持っていると、PHPの将来のバージョンでデフォルトのアルゴリズムが変更された場合はどうなりますか? PASSWORD_DEFAULT
定数を使用してパスワードがあり、PHP変更の将来のバージョンのデフォルトのアルゴリズムを使用している場合、password_hash
関数は期待どおりに機能し続けます。ハッシュされたパスワードには、使用されているアルゴリズムに関する情報が含まれているため、password_verify
関数はパスワードを正しく検証できます。 PHP 5.5パスワードHASH APIを使用して非ASCIIパスワードを使用できますか?
password_hash
およびpassword_verify
関数はバイナリデータを使用するため、任意の文字のパスワードを処理できます。ただし、さまざまなシステムがASCII以外の文字を異なる方法で処理する可能性があることに注意する必要があるため、パスワードをハッシュする前に正規化することをお勧めします。
以上がPHP 5.5パスワードハッシュAPIでパスワードをハッシュしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。