リンクをつける時に別ウインドウで開くようにする「target=”_blank”」ですが最近知った情報で脆弱性・危険性についての問題があるとの事で調べてみました。
https://developers.google.com/web/tools/lighthouse/audits/noopener?hl=ja
target="_blank"
を使用して任意のページから別のページにリンクしている場合、リンク元のページとリンク先のページは同じプロセスで動作します。 そのため、リンク先のページで負荷の高いJavaScriptが実行されていると、リンク元のページのパフォーマンスが低下するおそれがあります。
リンク先で高負荷をかけるJavaScript があるとリンク元サイトのパフォーマンスにも影響するようです。
最近はgoogleのアルゴリズムにWEBサイトの表示速度も関わってくるので要確認事項ですね。
また、
https://developers.google.com/web/tools/lighthouse/audits/noopener?hl=jatarget="_blank"
にはセキュリティ上の脆弱性もあります。リンク先のページではwindow.opener
を使用して親ウィンドウのオブジェクトにアクセスしたり、window.opener.location = newURL
によって親ページの URL を変更したりできます。
「target=”_blank”」で開いたページはリンク元ページをJwindow.openerオブジェクトとして持つのでJavaScriptで操作する事が出来てしまいます。
流れとしてはリンクをクリック→リンク先のサイトが別ウインドウ(タブ)で表示されると同時にリンク元のサイトを開いているウインドウを悪意のあるサイトへリンクさせるという事が可能という事です。
<a>タグに「target=”_blank”」をつける時に「rel=”noopener”」も付けるという事です。
これでwindow.openerで制御出来なくなる様です。
no openerという事ですね~
WEBディレクター、デザイナー、フロントエンドエンジニア、投資家、会社オーナー
2007年に同志と起業、2009年に法人化、2018年にHira's.netを設立。
WEBデザイン、コーディング、ディレクター等WEB制作全般に幅広く携わっています。