5分で完了!過去の流出パスワード入力を防ぐLaravelパッケージ

前回、全53種類!Laravel 5.6のバリデーション実例という記事を公開したのですが、その関係で、ひとつ気になるパッケージを発見しました。

そのパッケージは、

過去の流出パスワードと一致しているかをチェックする

というものです。

つまり、yahoo.comだったり、アシュレイ・マディソン(不倫を推奨するサイト)がハッキングを受けて数多くの個人データが流出したわけですけど、そういった流出データのパスワードをデータベース化している‘;–have i been pwned?というサイトを通して、入力パスワードが安全かチェックすることができます。

そのため、よりセキュリティに配慮したサイト構成を考えている場合は、こういったパッケージで独自バリデーションを追加しておくことをおすすめします。

インストール方法

インストールはいつものごとくcomposerで一発でOKです。

composer require valorin/pwned-validator

もし、auto-discoveryがあるなら(Laravel 5.5以上)、これだけで完了です。

次に、バリデーションに失敗した時のメッセージを登録しましょう。
日本語の場合は、/resources/lang/ja/validation.php です。

次のコードを、配列内に追加してください。

/*  省略  */

'pwned' => 'このパスワードは、過去の流出で確認されたものと一致しています。他のパスワードへ変更してください。',

/*  省略  */

使い方

使い方も通常のバリデーションと同じで問題ありません。

$input = ['password' => 'xxxxxxxx'];
$rules = ['password' => 'pwned'];
$validator = Validator::make($input, $rules);

if($validator->fails()) {

    $errors = $validator->messages()->toArray();
    echo $errors['password'][0]; // このパスワードは、過去の流出で確認されたものと一致しています。他のパスワードへ変更してください。

}

※この例はテストのため、バリデーションしてすぐエラー表示してますけど、通常はリダイレクトやJSONなどでデータを受け取ってください。

ちなみに

pwnedというのは、owned(所有されている)と同じものでネットスラングなんだそうです。「p」と「o」はキーボードでとなりにあるので、よくミスタイプするからなんですね。
今回初めて知りました。

ということで、よりウェブサイトをより安全にするために一度検討してみてはいかがでしょうか。

ではでは〜。