<a target=”_blank”>外部リンク</a>のセキュリティ対策

外部リンクに使う target="_blank" にセキュリティリスクがあるって知ってました?実際、Google Chrome や他のブラウザでは以下のような警告メッセージが表示されることがあります。

Using target=”_blank” without rel=”noreferrer” is a security risk.(rel=”noreferrer” を使用せずに target=”_blank” を使うことはセキュリティリスクです)

🚨 なぜtarget=”_blank”は危険なの?

理由:window.opener 経由で悪意ある操作が可能になるから
簡単に言うと「target=”_blank”」で開いた リンク先のページ(ページB)から、元のページ(ページA)の情報にアクセスされてしまう危険があります。

🚨 実際に起こり得るリスク

ページBが悪意あるサイトだった場合、window.opener.location = "https://phishing-site.com"のようにして、元のページ(ページA)を不正なサイトへリダイレクトさせることができます。これは「タブナビゲーションの脆弱性」とも呼ばれ、フィッシング詐欺やウイルス拡散の原因になることがあります。

✅ 安全な書き方 rel=”noopener noreferrer”を追加

セキュリティ対策として以下のように記述しましょう
この rel 属性がセキュリティを守る重要な役割を果たします

HTML
<a href="https://example.com" target="_blank" rel="noopener noreferrer">外部リンク</a>

✅ noopenerの効果

リンク先のページ(B)から window.opener を使って元ページ(A)にアクセスできなくなります。悪意あるスクリプトによるリダイレクト攻撃を防止します。処理を別スレッドに分けることで、パフォーマンスの向上にもつながります。

✅ noreferrerの効果

リンク先にリファラー情報(どこから来たか)を送信しません。遷移元ページのURLやクエリ情報などが外部に漏れることを防げます。一部ブラウザでは「noopener」単体では機能しない場合があるため、「noreferrer」を併用するのがベストです。

✅ パフォーマンス面のメリット

noopener」を使うことで、リンク元とリンク先のページが別スレッドで処理されるようになります。これにより、リンク先で重たいスクリプトが動いても、リンク元のページに影響を与えにくくなります。

📌 まとめ

target="_blank" だけで外部リンクを開くのは危険!セキュリティ&パフォーマンス対策として「rel="noopener noreferrer"」をセットで使うのが必須!フィッシング詐欺やリファラー漏洩を防ぐためにも、全ての外部リンクで意識して記述する習慣をつけよう!

記事一覧に戻る