フィッシング詐欺対策「a href … rel=”noopener”」について noreferrerも必要!?

フィッシング詐欺対策a href … rel=noopener noreferrer

aタグの「target=”_blank”」の設定で「rel=”noopener”」は、なぜ必要なの?  「rel=”noopener noreferrer”」の設定とどちらが良いの?アフリエイトの際に注意しておきたいこと。noopener、noreferrerを設定する理由と必要性について考える。

1)aタグの「target=”_blank”」はフィッシング詐欺に悪用される!?

<a href="https://sample.com" target="_blank">SAMPLE.COM</a>

aタグの「target=”_blank”」 は、外部サイトへリンクさせたい場合に、新しいタブでリンク先を開く(”window.opener”)オプション機能ですが、この機能はフィッシング詐欺攻撃を受ける(悪用される)可能性があります。セキュリティ上の脆弱性があると言われる方がいますが、この挙動自体は脆弱性には当たらないようです。「target=”_blank”」 の特性を悪用し閲覧者に気付かれないように細工(ダミーサイト誘導〜IDやパスワード入力させるなど)され情報を盗まれる被害につながってしまうようだ。サイト及びサイト訪問者の安全を守るためにも、フィッシング詐欺攻撃のリスクを考慮し使用したい。

なお、内部リンクでは必要性がない限り「target=”_blank”」を設定することはないですが、外部リンクの場合に多用することが多いのではないでしょうか? 外部リンクへ移った訪問者を繋ぎ止めておきたい、戻って来てもらいたいという考えもあり、筆者も外部リンクでは多用していたが、「target=”_blank”」を使わなければ”window.opener”によるフィッシング詐欺のリスクを減らせるわけです。そもそも新しいタブでリンク先を開く必要があるのか?というところから見直し、なるべくこの設定を使用しないようにするという考え方に切り替えたほうが良いのではないだろうか。まずはこの点を今一度考え方を直すきっかけにしてみては!?

対策方法は「rel=”noopener”」

<a href="https://sample.com" target="_blank" rel="noopener">SAMPLE.COM</a>

とはいえ、「target=”_blank”」全く使わないわけにもいかない…使わなければならないケースもあるでしょう。その対策が「rel=”noopener”」となります。「target=”_blank”」 とは「セットで設定する」ことが推奨されています。「target=”_blank”」ではwindow.opener.documentオブジェクトが参照可能でリンク元とリンク先ページ間でメモリ共有でき、元のページのドキュメントを操作することが出来てしまいますが、noopenerを付けることで、別々のプロセスで実行できるため、リンク先からwindowにアクセスできなくなり、フィッシング詐欺対策になるというわけです。

ただし、noopenerはIEなどのブラウザでは対応していないので注意が必要です。

noopenerに対応していないブラウザには「rel=”noopener noreferrer”」

<a href="https://sample.com" target="_blank" rel="noopener noreferrer">SAMPLE.COM</a>

noreferrerは、noopenerと同様の役割と言いましょうか効果があり、noopenerで対応していないブラウザ(IE11、Opera、Android Browser、Samsung Internet)でも対応していますので「rel=”noopener noreferrer”」と設定することで、カバーできるブラウザが増えます。なおIE11はwin10の場合のみ対応となっているようです。

 noreferrerはアフリエイトでは注意!!

referrer(リファラー)とはリンクから別のページ(サイト)に移動したときのリンク元のページのことで、通常は 閲覧者がどこのサイトから訪問したのか?などの閲覧情報をリンク元から取得できるのですが、noreferrerの設定によりリファラを送らない(リンク元の情報が取得できない)ように制限されてしまいます。アフリエイトやGoogleアナリティクスのようなアクセス解析ツールで影響が出ると思われますので、使い方には注意したいところです。

2)最後に

繰り返しになりますが、aタグの「target=”_blank”」では「noopener」「noreferrer」の設定を適切に行い対策する必要があるということはお分かりいただけたかと思いますが、noopenerで対応していないブラウザの問題をnoreferrerである程度カバーできるとは言え、IEはIE11(WIN10)のみなので、まずはaタグの「target=”_blank”」 を使わないということが一番の対策なのかもしれません。