aタグのtarget="_blank"には脆弱性があった【新規ウィンドウで開く】

aタグのtarget="_blank"とは、リンク作成時に新規ウィンドウで開くときに使用する属性です。

実際に書いてみると、こんな感じ

<a href="https://d1gk62opoknolq.cloudfront.net" target="_blank">リンク</a>

 

これを実装し、クリックすると、新規ウィンドウでtook.jpのサイトが開かれます。

では、問題点についてみていきましょう。

 

 

問題点

1.パフォーマンスの低下

リンク先サイト  と リンク元サイトは同じプロセスで動作しているため、リンク先サイトで高負荷のjavascriptが実行された場合、リンク元のパフォーマンスも落ちてしまう。

 

2.リンク元サイトのURLを書き換えられる

これは、わかりにくいので、実際に試してみましょう。

ここをクリック

※ごめんなさい。現在は非公開にしています。

 

クリックすることで、新規タブでSampleページが開き、現在のタブは、took.jpのトップページに変わったはずです。

これは、リンク先サイトで、

<script>
window.onload = function() {
 window.opener.location = 'https://d1gk62opoknolq.cloudfront.net';
}
</script>

 

というスクリプトを実行させているからです。

リンク先が信用できるサイトなら良いですが、信用できないサイトの場合は、リンク元のサイトを操られる可能性があるので、危険です。

 

 

解決法

rel=”noopener”をつける。

これだけです。

実際に書くと、こんな感じ。

<a href="https://d1gk62opoknolq.cloudfront.net" target="_blank" rel="noopener">リンク</a>

 

以下のサイトを参考にしました。

https://developers.google.com/web/tools/lighthouse/audits/noopener?hl=ja