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


関連記事

麻雀で自分が何を切るか学習させる

1 はじめに2 プロジェクト名を決めてみる3 何切る問題で考慮される要素3.1 手牌3.2 ドラ3.3 考慮していない要素(本当は入れたい)4 学習の方法5 さいごに はじめに 前回執筆しました、配牌 ...

rails

RailsでAjax処理で画面を更新する

1 はじめに2 View(遷移元)の設定3 Controllerの実装4 View(遷移先)の実装5 参考6 さいごに はじめに RailsでAjax処理で画面を更新する方法を簡単に紹介します。 Vi ...

Go言語

Go言語の基礎〜基本構文その2〜

1 はじめに2 配列3 スライス3.1 スライスの宣言3.2 len3.3 append3.4 range3.5 値の切り出し3.6 可変長引数4 map4.1 宣言と初期化4.2 マップの操作4.3 ...

rails

form_withでフォームの送信前に処理を行う方法

1 はじめに2 form_with3 サンプル4 さいごに5 参考 はじめに フォームを送信する前に処理を行いたいケース(Google Analyticsのイベントのトラッキングなど)があると思います ...

aws

AWS BatchはSaaSの非同期処理に向いているか?

1 はじめに2 AWS Batchの要素2.1 コンピューティング環境2.2 ジョブキュー2.3 ジョブ定義2.4 ジョブ3 AWS Batchの構築3.1 事前準備3.2 コンピューティング環境の作 ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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