Hira's.net

WEB
2019.05.15

「target=”_blank”」の危険性について

「target=”_blank”」の危険性について

リンクをつける時に別ウインドウで開くようにする「target=”_blank”」ですが最近知った情報で脆弱性・危険性についての問題があるとの事で調べてみました。

パフォーマンスについて

target="_blank" を使用して任意のページから別のページにリンクしている場合、リンク元のページとリンク先のページは同じプロセスで動作します。 そのため、リンク先のページで負荷の高いJavaScriptが実行されていると、リンク元のページのパフォーマンスが低下するおそれがあります。

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

リンク先で高負荷をかけるJavaScript があるとリンク元サイトのパフォーマンスにも影響するようです。
最近はgoogleのアルゴリズムにWEBサイトの表示速度も関わってくるので要確認事項ですね。

危険性について

また、target="_blank" にはセキュリティ上の脆弱性もあります。リンク先のページでは window.opener を使用して親ウィンドウのオブジェクトにアクセスしたり、window.opener.location = newURL によって親ページの URL を変更したりできます。

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

「target=”_blank”」で開いたページはリンク元ページをJwindow.openerオブジェクトとして持つのでJavaScriptで操作する事が出来てしまいます。
流れとしてはリンクをクリック→リンク先のサイトが別ウインドウ(タブ)で表示されると同時にリンク元のサイトを開いているウインドウを悪意のあるサイトへリンクさせるという事が可能という事です。

対策について

<a>タグに「target=”_blank”」をつける時に「rel=”noopener”」も付けるという事です。

これでwindow.openerで制御出来なくなる様です。
no openerという事ですね~

関連記事

この記事を書いた人

ひらず

WEBディレクター、デザイナー、フロントエンドエンジニア、投資家、会社オーナー 2007年に同志と起業、2009年に法人化、2018年にHira's.netを設立。
WEBデザイン、コーディング、ディレクター等WEB制作全般に幅広く携わっています。