バーナーとかで外部サイトとの連携するのはよくあることだが、リンクを置くだけというとても簡単な作業なので、無意識のうち、脆弱性ができてしまうので、ここではポイントをまとめていきます。
問題
aタグで他サイトへ遷移する時に、遷移先のページでは元のページのlocation
オブジェクトにアクセスができてしまい、\
悪質なアクションを行うことができる。
具体的どんなことが起こりえる
こんなシナリオを見て行きましょう
- あなたのサイトに他サイト遷移のリンク配置
- ユーザーはリンクをクリックして、新しいタブで開く
- ユーザーはあなたのサイトのタブに戻る \
ここではさっぱり元のタブに戻って、あなたのサイトを見ているんだと思っているユーザは、悪質なページに切り替わったのです!
実際で試してみましょう
- あなとのサイトへアクセスする\
- スポンサーページをクリックし、○○株式会社サイトへアクセスする\
- 1のタブに戻って、ログインをする\
ここで変わった点を気づいたか
- リンクURL:yoursite.com -> y0ursite.com
- 画面がそっくりだね。(デモの目的でメッセージを出したけど)
対策
- aタグに rel="noopener noreferrer" 属性を追加
まとめ
- 外部ページへアクセスするリンクは全てrel="noopener noreferrer"に設定すること
- 本脆弱性は自サイトの問題ではなく、連携先側で攻撃を受けられた際、悪影響を及ぼす対策の必要なものである。