やじうまの杜
新規タブリンクの恐ろしい仕様、Chrome 88で変更へ ~Safari/Firefoxに合わせた安全な仕様に
“rel=noopener”を付け忘れても大丈夫
2020年11月27日 06:45
“やじうまの杜”では、ニュース・レビューにこだわらない幅広い話題をお伝えします。
「Google Chrome 88」以降、“target=_blank”なリンクは“rel=noopener”が付いているものとして扱われるようになるそうです。これは「Safari」や「Firefox」に合わせた措置で、セキュリティ面でもメリットがあります。
Thanks to@ericlaw, Chrome 88+ will match Safari and Firefox's behavior of treating `target=_blank` links as `noopener` by default (https://t.co/FArdcRjFme).
— Mike West (@mikewest)November 9, 2020
(If you need to maintain that relationship for some reason, you can opt-into it with `rel=opener`.)https://t.co/ol0gBhJ0Uj
なんのことかよくわからないという人にかいつまんで説明すると、以下のような“新規ウィンドウ(タブ)で開く”リンクタグがあったとき、
<a href="http://example.com/" target="_blank">
これを踏んで新規タブを開くと、元のタブが他のページに書き換えられることがあります。
少し難しい話をすると、“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”チャネルでテスト中。12月初めには“Beta”チャネルに移行し、来年1月には正式(Stable)リリースされる予定です。