0フォロワー

パスワードの取り扱い

ほとんどの開発者は、パスワードをプレーンテキストで保存できないことを知っていますが、多くの開発者は `md5` や `sha1` を使用してパスワードをハッシュしても安全だと考えています。かつては、上記のハッシュアルゴリズムを使用するだけで十分な時代もありましたが、現代のハードウェアでは、ブルートフォース攻撃を使用して、そのようなハッシュやさらに強力なハッシュでも非常に迅速にクラックすることが可能です。

最悪のシナリオ(アプリケーションが侵害された場合)でも、ユーザーパスワードのセキュリティを向上させるためには、ブルートフォース攻撃に耐性のあるハッシュアルゴリズムを使用する必要があります。現在の最良の選択肢は `bcrypt` です。PHPでは、crypt関数 を使用して `bcrypt` ハッシュを作成できます。Yiiは、安全にハッシュを生成および検証するための `crypt` の使用を容易にする2つのヘルパー関数を提供しています。

ユーザーが初めてパスワードを入力する場合(例:登録時)、パスワードをハッシュする必要があります。

$hash = Yii::$app->getSecurity()->generatePasswordHash($password);

ハッシュは、対応するモデル属性に関連付けることができるため、後で使用する目的でデータベースに保存できます。

ユーザーがログインを試行する場合、送信されたパスワードは、以前にハッシュされて保存されたパスワードに対して検証する必要があります。

if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
    // all good, logging user in
} else {
    // wrong password
}

タイプミスを見つけたり、このページの改善が必要だと考えましたか?
Githubで編集する !