ひとことで言うと
マジックリンクとはワンタイムトークンをURLに埋め込んだ認証用リンクです。「このメールアドレスにログインリンクを送信する」ボタンを押すと、サーバーがそのメールアドレス宛に有効期限付きの固有URLを送ります。ユーザーがそのURLをクリックすると、サーバーはトークンを検証してセッションを発行しログイン完了とします。
仕組みの核心はトークンの一回性と期限です。一度使われたトークンは即座に無効化されるため、同じリンクを二度クリックしても2回目はログインできません。有効期限(一般的に15〜30分)が切れたリンクも同様にアクセス拒否されます。この性質がマジックリンクをフィッシング対策として機能させます。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
AI生成サイトを特定のメールアドレスを持つ人だけに公開したい場合、マジックリンク方式のアクセス制御が有効です。ギガサイト便でメール認証を設定すると、URLを知っていてもメール認証を通らない限りコンテンツが表示されません。これにより「URLが漏れても送付先以外は開けない」状態を作れます。
社外のクライアントにデザインレビューURLを送るシナリオでは、マジックリンクはパスワードより運用が楽です。クライアントはパスワードを覚えたり入力したりする手間がなく、メールのリンクをクリックするだけでアクセスできます。パスワードの管理・失念・問い合わせ対応が発生しないため、制作者側の負担も減ります。
よくある誤解
「マジックリンクはメールを転送されたら誰でもログインできる」と思う人がいます。確かに有効期限内に転送されてしまえばリスクはゼロではありません。ただし一度使われた時点でトークンは無効化されるため、正規のユーザーが先にクリックしていれば転送先はログインできません。追加の保護策として、ログイン時にデバイスフィンガープリントを検証するサービスもあります。
「マジックリンクはパスワードより絶対安全」という過信も危険です。メールアカウントが乗っ取られていた場合、マジックリンクもそのまま悪用されます。機密度の高いコンテンツには、マジックリンクに加えてMFAや送信先IPの制限を組み合わせる設計が必要です。
安全に使うための注意点
マジックリンクの有効期限は短く設定するほど安全ですが、15分未満にするとメール受信が遅いユーザーが期限切れリンクでつまずきやすくなります。社内ユーザー向けには15〜30分、外部ユーザー向けには60分程度が実務上のバランスです。期限切れ時に再送信できるUIと「リンクが有効な時間は○分です」という説明をメール本文に含めてください。
マジックリンクのトークンをURLに含める際、リクエストログやブラウザ履歴にトークンが残ります。使用済みトークンの即時無効化に加え、ログ保存期間のポリシーを確認してください。GDPRやプライバシーポリシーに抵触しないよう、ログに記録されるURLパラメータについて自社のコンプライアンス担当に確認することを推奨します。
よくある質問
マジックリンクが届かない場合の対処法は何ですか?
まず迷惑メールフォルダを確認してください。届いていない場合、メールアドレスの入力ミス、または送信元ドメインがメールサーバーにブロックされている可能性があります。数分待っても届かなければ再送信を試みるか、システム管理者に送信元ドメインのホワイトリスト登録を依頼してください。
マジックリンクを使ったシステムを自社で構築する場合のポイントは?
トークンは暗号論的乱数(crypto.randomBytes等)で生成し、DBにハッシュ化して保存してください。有効期限・使用済みフラグをカラムで管理し、アクセス時に両方を検証します。SupabaseやClerk等のAuthサービスを使うと自前実装より安全で速く構築できます。
同じメールアドレスに複数のマジックリンクを送った場合、古いリンクはどうなりますか?
サービスの実装次第ですが、適切に設計されていれば最新のリンクが発行された時点で古いリンクは無効化されます。古いリンクを有効なままにしておくとリプレイ攻撃リスクが高まるため、新規発行時に過去のトークンを無効化する実装を確認してください。