やじうまの杜

新規タブリンクの恐ろしい仕様、Chrome 88で変更へ ~Safari/Firefoxに合わせた安全な仕様に

“rel=noopener”を付け忘れても大丈夫

 “やじうまの杜”では、ニュース・レビューにこだわらない幅広い話題をお伝えします。

新規タブリンクの恐ろしい仕様、「Chrome 88」で変更へ。“rel=noopener”を付け忘れても大丈夫

 「Google Chrome 88」以降、“target=_blank”なリンクは“rel=noopener”が付いているものとして扱われるようになるそうです。これは「Safari」や「Firefox」に合わせた措置で、セキュリティ面でもメリットがあります。

 なんのことかよくわからないという人にかいつまんで説明すると、以下のような“新規ウィンドウ(タブ)で開く”リンクタグがあったとき、

<a href="http://example.com/" target="_blank">

これを踏んで新規タブを開くと、元のタブが他のページに書き換えられることがあります。

リンクを踏んで新規タブを開くと、元のタブが勝手に他のページになる例(Chrome 87、Stable)

 少し難しい話をすると、“target=_blank”で開いたタブはスクリプトを使って“window.opener”にアクセスすると、元のタブに関する情報を取得できます。なんなら好きに書き換えて、任意のWebページに遷移するなんてこともできちゃうわけです。

 “そういえば、リンクを踏んで別のURLへ飛んだら、知らないうちに元のページが勝手に他のページにすり替わってた……”なんていう経験はありませんか? あれはこの仕様を悪用したもの。大丈夫と思い込んでいたページがフィッシングサイトにすり替わっていたら……なんて思うと恐ろしいですよね。

 これは、リンクタグに“rel=noopener”を付け加えるなどすれば抑止できます。

<a href="http://example.com/" target="_blank" rel=“noopener”>

 とはいえ、付け加えるのを忘れてしまったりすることはあり得るし、古いページがちゃんと書き直される保証はありません。

 そこで「Safari」や「Firefox」は、Webブラウザー側で“rel=noopener”を勝手に付け加える(ような)挙動をします。これにより、“rel=noopener”が付いてないリンクでも悪さができなくなるわけ。遅ればせながら「Chrome」もこの仕様に統一されますが、「Microsoft Edge」をはじめとする他の「Chromium」ベースブラウザーもこれに追随するはずで、そうなれば主要ブラウザーで動作が統一されることになります。

先ほどと同じことを「Chrome 88」(Dev)で試した様子。元のタブは書き換わらない

 「Chrome 88」は現在“Dev”チャネルでテスト中。12月初めには“Beta”チャネルに移行し、来年1月には正式(Stable)リリースされる予定です。