はじめに
- 先日、メールからアカウントの本登録を行うタイプの認証処理を構築していた際にエラーに出会ったので備忘録として残しておきます。
目次
- どんなエラーに遭遇したかの概要
- エラーの原因
- エラーに対しての解決策
どんなエラーに遭遇したかの概要
-
今回のエラーは作成したメールの認証ボタンの本登録処理がメールアプリに送信された段階で勝手に実行されてしまうというものです。
以下の画面はその作成したメールの画面です。
この画面に写っている「本登録を完了する」というボタンを押して初めて本登録の認証処理が実行されるはずなのですが、なぜかメールが送信された時点で勝手にこの本登録の処理のリクエストが実行されているようなのです。ボタンを押したわけでもないのになぜ・・・!?
エラーの原因
-
実際のところエラーの原因は簡単なものでした。それはメールアプリ側で受信メール内のリンクを自動的に踏んで安全性をスキャンする仕組みが動作して、その結果サーバー側では「ユーザーが本登録処理のリンクをクリックした」とみなされてしまうようです。
-
これはフィッシングに対しての防衛策であり、基本的にどんなメールアプリにも存在する機能のようです。
-
また、個人的に厄介だと感じたのはwebサーバーをlocalhostで立ち上げているときはフィッシング対策の機能は発動しませんが、本番環境で行うときにはフィッシング対策の機能が発動するという点です。
エラーに対しての解決策
-
エラーの対策として最も効果的で手っ取り早いのは二段階の確認画面を設けるというものでしょう
つまりメール内のリンクを踏んだだけでは本登録の処理を行わずに、「本登録を行いますか?」などのようなボタンを別の画面に作成し、そこに遷移して本登録処理のリクエストを送信するというものです。
まとめ
- 普段いろいろなサイトで載っている「信号機を選択してください」みたいなやつとか「ロボットでないことを証明してください」みたいな謎の処理は今回の記事のようなことを防ぐ目的があったのかなあと一つ勉強になりました。