0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メールに埋め込んだリクエストが勝手に実行される・・・

Posted at

はじめに

  • 先日、メールからアカウントの本登録を行うタイプの認証処理を構築していた際にエラーに出会ったので備忘録として残しておきます。

目次

  1. どんなエラーに遭遇したかの概要
  2. エラーの原因
  3. エラーに対しての解決策

どんなエラーに遭遇したかの概要

  • 今回のエラーは作成したメールの認証ボタンの本登録処理がメールアプリに送信された段階で勝手に実行されてしまうというものです。
    以下の画面はその作成したメールの画面です。
    image.png

    この画面に写っている「本登録を完了する」というボタンを押して初めて本登録の認証処理が実行されるはずなのですが、なぜかメールが送信された時点で勝手にこの本登録の処理のリクエストが実行されているようなのです。ボタンを押したわけでもないのになぜ・・・!?

エラーの原因

  • 実際のところエラーの原因は簡単なものでした。それはメールアプリ側で受信メール内のリンクを自動的に踏んで安全性をスキャンする仕組みが動作して、その結果サーバー側では「ユーザーが本登録処理のリンクをクリックした」とみなされてしまうようです。
    image.png

  • これはフィッシングに対しての防衛策であり、基本的にどんなメールアプリにも存在する機能のようです。

  • また、個人的に厄介だと感じたのはwebサーバーをlocalhostで立ち上げているときはフィッシング対策の機能は発動しませんが、本番環境で行うときにはフィッシング対策の機能が発動するという点です。

エラーに対しての解決策

  • エラーの対策として最も効果的で手っ取り早いのは二段階の確認画面を設けるというものでしょう
    つまりメール内のリンクを踏んだだけでは本登録の処理を行わずに、「本登録を行いますか?」などのようなボタンを別の画面に作成し、そこに遷移して本登録処理のリクエストを送信するというものです。

    つまりは以下のような流れです。メールが送られてきて「本登録を完了する」ボタンを押すと・・・
    image.png

    以下の画面に遷移する。ここのボタンを押すことで初めて本登録処理のリクエストが送信される。
    image.png

まとめ

  • 普段いろいろなサイトで載っている「信号機を選択してください」みたいなやつとか「ロボットでないことを証明してください」みたいな謎の処理は今回の記事のようなことを防ぐ目的があったのかなあと一つ勉強になりました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?