別タブ表示時(target=”_blank”)のベストプラクティス

モダンブラウザはセキュリティの強化が進んでいるため、多くの場合 rel="noopener" の記述がなくてもセキュリティは向上しています。

モダンブラウザの対応

caniuseでも示されている通り、target="_blank" を指定すると、rel="noopener"相当の保護を提供するブラウザの利用率はグローバルで95%となっています。

https://caniuse.com/mdn-html_elements_a_implicit_noopener

Google Chrome

  • デフォルトの保護あり
    target="_blank" が使用される場合、デフォルトで rel="noopener" 相当の保護が適用されます(バージョン 88以降)。

Microsoft Edge

  • デフォルトの保護あり
    Chromeと同じChromiumベースのため、同様に rel="noopener" 相当の保護が適用されます。

Safari

  • デフォルトの保護あり
    target="_blank" が使用される場合、デフォルトで rel="noopener" の相当の保護が適用されます(バージョン 12.1以降)。

Mozilla Firefox

  • デフォルトの保護あり
    target="_blank" が使用される場合、デフォルトで rel="noopener" 相当の保護が適用されます(バージョン 79以降)。

なぜ rel="noopener" を明示的に設定するのか?

一貫性と互換性のため

  • ブラウザのバージョンによる差異
    すべてのユーザーが最新のブラウザを使用しているとは限りません。古いバージョンのブラウザではデフォルトの保護が提供されない可能性があります。
  • 異なるブラウザ間での一貫性
    明示的に rel="noopener" を設定することで、すべてのブラウザで一貫した動作を保証できます。

セキュリティの強化

  • 確実な保護
    一部のブラウザ(現段階でグローバルの利用率は5%程度)は noopener による保護を提供しないため、明示的に設定することでリンク先のページが元のページを制御するリスクを完全に排除できます。

ベストプラクティス

  • Web開発の標準
    セキュリティとパフォーマンスのベストプラクティスとして、rel="noopener" を設定することが推奨されています。これにより、将来的なブラウザの変更やセキュリティ更新に対する対応が容易になります。

結論

モダンブラウザの多くはデフォルトで rel="noopener" 相当の保護を提供してます。

2024年に生きる私たちがtarget="_blank" を指定する場合、rel="noopener" の記述は不要だと考えます。

しかし、IE11など古いブラウザの利用を止められない事情があるケースでは、rel="noopener" の記述がまだ必要な場合があると言えるでしょう。例えば、こうしたセキュリティに対する意識を醸成すべき立場にある企業や団体、官公庁などではまだ入れておいた方が無難ではないかと思います。