【PHP8.x】sodium_crypto_pwhash_str_needs_rehash関数の使い方

作成日: 更新日:

sodium_crypto_pwhash_str_needs_rehash関数は、提供されたパスワードハッシュ文字列が、現在のシステムで推奨されるセキュリティ設定と比べて再ハッシュが必要かどうかを判定する関数です。

この関数は、既存のパスワードハッシュが、セキュリティ基準の向上やハッシュアルゴリズムの進化に伴い、より強力な形式で保存し直すべきかをチェックするために使用されます。引数としてハッシュ化されたパスワード文字列を受け取り、そのハッシュが現在の推奨設定(例えば、より多くの計算コストを要求する設定や、新しいハッシュアルゴリズム)に満たない場合に真(true)を返します。

これにより、システムはユーザーがログインする際など、適切なタイミングで古い設定でハッシュ化されたパスワードを検出し、新しいセキュリティ設定で再ハッシュしてデータベースに更新することができます。もしハッシュが現在の設定基準を既に満たしている場合は偽(false)を返し、特に処理を行う必要がないことを示します。

この機能は、システムのパスワードセキュリティを常に最新の状態に保ち、潜在的な攻撃からユーザーの情報を保護するために極めて重要です。例えば、将来的にセキュリティ上の理由からハッシュの強度を上げたい場合でも、この関数を用いることで、既存のユーザーのパスワードを安全かつ効率的に新しい基準へ移行させることが可能になります。

基本的な使い方

構文(syntax)

1<?php
2
3$storedHash = '$argon2id$v=19$m=65536,t=4,p=1$QnIxaGdCdnZ0Z3h4aHFjdw$Xb/S/p/T/y/r/q/p/r/S/q/p/Q/S/q/p/Q/S/q/p/Q'; // 例: データベースから取得したハッシュ
4$currentOpslimit = SODIUM_CRYPTO_PWHASH_OPSLIMIT_RECOMMENDED; // 現在推奨される操作制限
5$currentMemlimit = SODIUM_CRYPTO_PWHASH_MEMLIMIT_RECOMMENDED; // 現在推奨されるメモリ制限
6
7$needsRehash = sodium_crypto_pwhash_str_needs_rehash(
8    $storedHash,
9    $currentOpslimit,
10    $currentMemlimit
11);
12
13?>

引数(parameters)

string $password, int $opslimit, int $memlimit

  • string $password: ハッシュ化されたパスワード文字列
  • int $opslimit: 許容される操作回数
  • int $memlimit: 許容されるメモリ使用量 (バイト単位)

戻り値(return)

bool

指定されたパスワードハッシュ文字列が、現在の設定で再ハッシュが必要かどうかを真偽値(boolean)で返します。trueであれば再ハッシュが必要です。

【PHP8.x】sodium_crypto_pwhash_str_needs_rehash関数の使い方 | いっしー@Webエンジニア