よほどの理由がない限り、暗号化キーを手動で入力しないでください。ドキュメントをpassword_hash
さらに読むことをお勧めします。
適切に使用すると、システムがすべてを独自に把握できるようになります。
function hashPassword($password)
{
return password_hash($password, PASSWORD_DEFAULT);
}
次に、PHP は現在のハードウェアに最適な利用可能なアルゴリズムと最も適切な反復回数を内部的に選択し、安全で一意のソルトを生成します。
パスワードを検証するには、 を使用password_verify
し、User
クラスなどで必要な再ハッシュを確認します。
class User
{
...
public function verifyPassword($password)
{
if(!password_verify($password, $this->hash))
return false;
if(password_needs_rehash($this->hash, PASSWORD_DEFAULT))
$this->setNewHashAndSaveToDB(password_hash($password, PASSWORD_DEFAULT));
return true;
}
}
この構成を使用することで、ハッシュされたパスワードが常に最新の状態に保たれ、ユーザーのログイン時に自動的にハードウェアの容量が増加しても安全に保たれます。
どのアルゴリズムをPASSWORD_DEFAULT
選択し、どの構成を使用するかに関するポリシーは次のとおりです。
この関数によってサポートされるアルゴリズムの更新 (またはデフォルトのアルゴリズムへの変更) は、次の規則に従う必要があります。
- 新しいアルゴリズムは、デフォルトになる前に、PHP の少なくとも 1 つのフル リリースのコアに含まれている必要があります。したがって、たとえば、新しいアルゴリズムが 5.5.5 に追加された場合、5.7 までデフォルトの対象にはなりません (5.6 が最初の完全なリリースになるため)。ただし、5.6.0 で別のアルゴリズムが追加された場合は、5.7.0 でもデフォルトの対象になります。
- デフォルトは、リビジョン リリースではなく、完全なリリース (5.6.0、6.0.0 など) でのみ変更する必要があります。これに対する唯一の例外は、現在のデフォルトに重大なセキュリティ上の欠陥が見つかった緊急時です。