用語解説

オープンリダイレクトとは?HTML共有・AI生成サイトでの意味をやさしく解説

「オープンリダイレクト」は、Webページが別のURLへ転送する機能を悪用し、正規ドメインを踏み台にして詐欺サイトへ誘導する攻撃手法です。AI生成サイトにリダイレクト機能が含まれているとフィッシングの踏み台にされる恐れがあります。どんな場面で問題になるか、共有前に何をチェックすべきかを解説します。

ひとことで言うと

オープンリダイレクトとは、Webページが外部URLへのリダイレクト先をパラメータとして受け取り、検証なしにそのURLへ転送してしまう脆弱性です。たとえば https://example.com/go?url=https://evil.com というリンクがあると、正規ドメインのURLに見えながら実際には詐欺サイトへ誘導できます。

攻撃者がこれを悪用する典型的な手口はフィッシングメールです。「正規企業のドメインに見えるURL」をメールに記載し、クリックしたユーザーを不正サイトへ転送します。ユーザーはドメイン部分しか確認しないことが多いため、正規に見えるURLは非常に信頼されやすく被害が拡大しやすいです。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

HTML共有で関係する場面

AIが生成したHTMLに「ログイン後に元ページへ戻るリダイレクト処理」が含まれている場合、URLパラメータでリダイレクト先を指定する実装が現れることがあります。たとえば location.href = new URLSearchParams(location.search).get('next') のようなコードです。nextパラメータの値を検証しないと、第三者が任意URLへの誘導リンクを作成できます。

静的HTMLを共有URLで配布するサービスを使う場合、HTMLファイル内にJavaScriptによるリダイレクト処理がなければリスクは低いです。ただしメタリフレッシュタグ(<meta http-equiv='refresh'>)を使った外部URL転送も同様の脆弱性になるため、AI生成コードにそのタグが含まれていないか確認が必要です。

よくある誤解

「HTTPSなら転送先が信頼できる」という誤解は非常に多く見られます。オープンリダイレクトはHTTPS上でも成立し、転送先が https://evil.com であっても同様の被害が起きます。プロトコルはデータの暗号化に関係するものであり、「どこへ転送するか」のバリデーションとは別の問題です。

「AIが書いたコードにリダイレクト処理は入らない」という思い込みも危険です。ログイン後の返り先・ランディングページ切り替え・多言語切り替えなど、リダイレクト処理は汎用的なコードパターンとしてAIが生成しやすい項目です。生成されたHTMLにlocation.href・window.location・meta refreshが含まれているか検索してください。

安全に使うための注意点

リダイレクト先URLをパラメータで受け取る処理がある場合は、許可リスト方式(ホワイトリスト)で検証を行います。転送可能なドメインを事前に配列で定義し、それ以外のドメインは拒否する実装が標準的な対策です。JavaScriptであれば new URL(target).hostname を取得して比較するコードを追加してください。

共有前のチェックとして、HTMLファイル内の「location.href」「location.replace」「location.assign」「meta http-equiv」をテキスト検索し、URLを外部から受け取っている箇所を洗い出します。それぞれの転送先が固定値かユーザー入力由来かを確認するだけで、オープンリダイレクトの大半を発見できます。

共有URLのドメインが自社や配信サービスのドメインである場合、そのURLが悪意ある第三者にフィッシングの踏み台として使われると自社ブランドへの信頼損失にもつながります。リダイレクト処理を含むHTMLの共有には特に慎重になり、不要なリダイレクト機能は削除してから配布することを推奨します。

よくある質問

静的HTMLでオープンリダイレクトが発生するのはどんなときですか?

JavaScriptでURLパラメータを読み取り、その値をlocation.hrefへ代入するコードがある場合に発生します。メタリフレッシュタグに外部URLを直接記述している場合も同様のリスクがあります。

リダイレクトをAIに書かせる場合はどう指示すればリスクを減らせますか?

「リダイレクト先は許可リストで検証し、リスト外のURLは/errorへ転送せよ」と明示的に指示するだけで、AIが安全なホワイトリスト実装を生成しやすくなります。生成後も必ずコードを確認してください。

オープンリダイレクトとSSRF(サーバーサイドリクエストフォージェリ)はどう違いますか?

オープンリダイレクトはブラウザのユーザーを外部URLへ誘導するクライアント側の問題です。SSRFはサーバーが内部リソースへ不正なリクエストを送る問題で、静的HTMLには通常SSRFは発生しません。

関連記事

「用語解説」の記事をもっと見る →