Hello there, ('ω')ノ
オープンリダイレクトとは?
一言で言えば:
「URLの一部を悪用して、利用者を別のページへ勝手に飛ばす」
というものです。
たとえば以下のようなURL:
https://intra.example.co.jp/login?redirect=https://example.com
このredirectパラメーターの中身を書き換えると:
https://intra.example.co.jp/login?redirect=https://fake-site.com
別の悪意あるサイトに飛ばすことができてしまうリスクがあります。
実際のチェック手順① URLを手動で試す
- 社内システムのログイン画面などを開く
URLに以下のようなパラメーターがついていないか探す:
redirect=
- next=
- url=
- return_url=
- continue=
例:
https://intra.example.co.jp/login?redirect=https://shopping-site.com
- redirect先のURLを書き換えてみる:
https://intra.example.co.jp/login?redirect=https://fake-login.com
- 実際にそのURLをブラウザで開き、意図しないページへ遷移しないか確認します。
実際のチェック手順② パラメーターなしで試す
もし元のURLにパラメーターがない場合でも、 /login?redirect=https://example.com のように後付けでつけて試す方法もあります。
意外とチェック漏れでそのまま受け付けてしまうケースがあります。
チェックポイントまとめ
✅ リダイレクト先を指定できるパラメーター名があるか ✅ 外部ドメインへ遷移できてしまわないか ✅ ログイン認証前後で挙動が変わるか確認
社内向けよくある場所
- ログイン画面
- ログアウト画面
- エラー画面
- 社内システムから外部サービスへのリンクボタン
特にクラウドサービス連携部分では要注意です。
よく使われるパラメーター名一覧
- redirect=
- next=
- url=
- continue=
- return=
- target=
このあたりをブラウザ開発者ツールで検索するだけでも、怪しい箇所を洗い出せます。
チェックリストまとめ
- [ ] リダイレクト用パラメーターが存在するか?
- [ ] 外部URLへの遷移ができるか?
- [ ] ログイン前後で挙動が変わるか?
- [ ] 本番環境で試す際は事前確認済みか?
注意事項
- 本番環境では必ず許可を取ってから試す
- URLを書き換えるだけですが、関係者に迷惑がかからない範囲で行うこと
Best regards, (^^ゞ