最近WordPressのバージョンアップがあり「4.7.4」に更新しました。
今回のバージョンアップで大きく変わった点が、ネット上で話題になっています。
変わった点とはリンク属性に「noopener」「noreferrer」が付加されたことです。
リンクを「target="_blank"」にした場合に自動で「rel="noopener noreferrer"」が付加されるようになったのですが、投稿モードが「ビジュアルモード」の場合だけで、「テキストモード」では自動付加はされません。
今日はこの件について、自動付加されるとどのようなことが起きるのか、あるいは付加しないとどうなるかなど、気になって調べたことをまとめておきます。
rel="noopener noreferrer"ってどんな意味
「rel="noopener noreferrer"」の意味を知る前に、何故このリンク属性が必要になったのかをお知らせします。
リンクを作る時に「同一ウィンドウにするか別ウィンドウにするか」二通りの方法があります。
「別ウィンドウ」にした場合、リンク先のページの設定によってリンク元のページが違うページに変えられるという現象が起こることがあります。
この現象はAサイトに原因が有るのではなく、Bサイトに細工がしてあって、リンク元のAサイトを表示しないで、強制的にCサイトを表示させることが出来るのです。
これを「target="_blank"」の脆弱性と言い、1年前に指摘する記事がありました。
こちらのサイトに詳しく書いてあるのでまずご覧ください。
》》target="_blank"は脆弱性!?【デモページあり】 | Sukohi’s tech blog!!
「target="_blank"」はリンク先を別ウィンドウ(新ウィンドウ)で開くhtmlタグですが、上のサイトに書いてあるように、JavaScriptが普通に動くようになった現在では、誰でもフィッシング被害に遭う可能性があるということです。
自分のサイトで外部リンクに「target="_blank"」を使ったからと言って、直接そんなことが起こるということではありません。
リンク先のサイトでJavaScriptを使った「リンク元サイトの移動」をするような細工をしていた場合のことです。
何故このようなことをするのか、もちろん何か目的があってやるわけですが、ほとんどの場合は悪意があってやることです。
リンク先のサイトにこんな細工がしてあるかどうかを確かめてからリンクを貼るなどの手間がかかることはしませんので、こんなことを防ぐ為に「rel="noopener noreferrer"」を付けるようにしたのが、今回のバージョンアップによって追加した機能です。
「rel="noopener"」でリンク元サイトの移動を防ぎ「rel="noreferrer"」で移動サイトを参照させない
「rel="noopener"」はJavaScriptの命令文「window.opener.location = ‘http://*******’;」を無効にするタグです。
この属性を追加することで、リンク元のAサイトがCサイトに変わることを防ぐのですが、ブラウザによっては、noopenerが機能しないこともあるので、noreferrerでCサイトの参照を防ぐことができます。
「rel="noopener noreferrer"」を付けると困ること
「rel="noopener noreferrer"」が付加されると困ることの一つとして指摘されているのが、アフィリエイトの成果が無効になるケースです。
無効になるのはリンクコードにID情報が無く、リファラによって参照元を特定しているような場合です。
私が知る限り、このような古いタイプのリンクコードを使っているASPはありませんが、実験した方がいて、どうやらあるようです。
その場合、「rel="noopener noreferrer"」を「functions.php」にコードを記述して外すこともできますが、「テキストモード」で投稿すると「rel="noopener noreferrer"」は自動付加されませんので試してみて下さい。
コメント