BackEnd

Laravelの便利なメールアドレスのバリデーション設定

投稿日:2021年10月25日 更新日:

はじめに

最近、Laravelを使用した案件でメールアドレスでユーザー登録をしてもらう際に、バリデーションを掛けているにも拘らず不正なメールアドレスが登録される不具合がありました。
バリデーションルール設定不足が原因だったのですが、メールアドレスのバリデーション設定について調べる良い機会になったので、紹介したいと思います。

不具合内容

バリデーションルール設定

FormRequestクラスを継承して以下の様にルール設定していました。
email と設定したら、後はLaravel側でいい感じにバリデーションしてくれていると思っていました。

不正なメールアドレス例

実際には以下の様なメールアドレスがバリデーションを通ってしまいました。

・〜@gmailcom(ドット抜け)
・〜@gmail(.com抜け)
・〜 @gmail.com(半角スペース)
・〜.@gmail.com(@マーク前にドット)

対応

結論から言うと、追加設定で対応する事が出来ました。Laravel5.8以降で使用可能となっています。
設定は以下5種類があります。

email:rfc

RFC準拠になっているかチェックする。RFC 5321, 5322, 6530, 6531, 6532が対象とのことです。

email:strict

上記の email:rfc のバリデーション時により厳格にチェックする。
Warningも出した時点でバリデーションエラーとするようです。

email:dns

メールアドレスのドメインが有効かどうかをチェックする。
内部では、dns_get_recordメソッドで DNS_MXDNS_ADNS_AAAA のレコードからドメインチェックしているようです。

email:spoof

偽装文字コードが使用されていないかチェックする。偽装メールアドレス防止などに有効の様です。
内部では、Spoofcheckerクラスを使用してチェックしているようです。

email:filter

RFC準拠になっているかチェックする。
内部でfilter_var()メソッドを使用してチェックしているようです。

修正

ルール検証

以下のコードで検証した所、 strict 又は dns のどちらかでバリデーションに成功しました。

修正後バリデーションルール設定

という事で、修正後のバリデーションルールは以下となりました。
今回は、 strictdns を設定する事で無事に不正メールアドレスをはじく事が出来ました。

さいごに

メールアドレスバリデーションが簡単に実装出来て非常に便利ですね。

おすすめ書籍

PHPフレームワークLaravel Webアプリケーション開発 バージョン8.x対応 PHPフレームワークLaravel Webアプリケーション開発

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

Laravelでの署名付きURL生成

1 はじめに2 今回のサンプル3 ビュー4 ルーティング5 コントローラー5.1 署名付きURLの生成5.2 期限ありの署名付きURLの生成5.3 署名のチェック6 おまけ6.1 署名の仕組7 さいご ...

laravel logo

Laravel Authのパスワードリセット機能をカスタマイズする

1 はじめに2 準備2.1 Auth2.2 mailhog3 ユーザー登録とログイン4 パスワードリセットのカスタマイズ4.1 ルーティング確認4.2 view編集4.3 認証処理の編集5 リセット画 ...

laravel logo

Laravel N+1検出ツールの紹介

1 はじめに2 インストール3 設定4 通知方法の追加5 テスト6 検知結果6.1 画面上アラート6.2 コンソール6.3 ログファイル7 ちなみに8 さいごに9 おすすめ書籍 はじめに DB利用した ...

laravel logo

Laravelで非同期実行する

1 はじめに1.1 動作環境2 準備2.1 デーブルの作成2.2 .envの修正3 ジョブの作成4 ジョブのディスパッチ5 キューワーカーを起動6 より細かな制御6.1 特定のキューにディスパッチする ...

Go言語

Go言語で使えるmigrationライブラリ

1 はじめに2 migrationライブラリ2.1 goose2.2 sql-migrate2.3 migu2.4 pop2.5 sqldef3 sqldefを使ってみる3.1 導入3.2 テーブルを ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。