WordPressのrel=”noopener noreferrer”自動付加によって起きる問題
WordPress 4.7.4から、セキュリティ対策のためにある機能が実装されました。
外部リンクにtarget=”_blank”が指定されていると、(つまり、「リンクを新しいタブで開く」が設定されていると)、自動でrel="noopener noreferrer"という属性も付加されるようになったのです。
これにより、一部のASP(アフィリエイトサービスプロバイダー)では、アフィリエイト成果が発生しないなどの問題が発生します。
WordPress 4.7.4のセキュリティ対策
外部リンクにtarget=”_blank”が指定されていると、セキュリティ的に不備があることが最近知られるようになりました。
こちらのサイトが参考になりますが、外部リンク先に悪意のあるコードが含まれている時に問題が発生します。遷移先のページから、フィッシング詐欺など悪意のある操作を行うことが可能なのです。
これを防ぐためにはtarget=”_blank”と同時にrel="noopener noreferrer"をつける必要があり、WordPress 4.7.4から自動で付加されるようになりました。
しかしこのせっかくのセキュリティ対策により、問題が発生することがあります。
このタグってどんな意味?
そもそも、このrel="noopener noreferrer"とはどんなタグなのでしょうか?
aタグにrel="noopener noreferrer"が指定されていると、遷移先のページのJavaScript等で"window.opener"が参照できなくなります。これにより上記の脆弱性を防止しています。
しかし、一部ブラウザではこのタグに対応していないので、この場合のためにrel="noopener noreferrer"と、"noreferrer"も指定しておくのです。
noreferrerも同じ働きもするのですが、これにより副作用が発生します。
アフィリエイトで成果が発生しない!
一部のASPでは、きちんとリファラが飛んでいないと成果が発生しないタイプのものがあります。
そして、rel="noreferrer"がついていると、"noreferrer"の名の通り、リファラが含まれません。つまり、成果が発生しなくなるということです。
私が実験した所、一部のASPでは実際に成果が発生しないことを確認しました。。。特に古いシステムを使っているASPです。非常にまずい事態ですね。
では、どうするか?
残念ですが、そのようなASPを使っている場合には、このセキュリティ対策が問題となります。いろいろな対策が考えられますが、4つほど紹介してみます。
target=”_blank”を外す
多くのアフィリエイトサイトではタグの改変は厳禁となっていることが多いですが、、、
しかし、成果発生に問題がない、と分かっている場合には、あえてtarget=”_blank”を外してもよいでしょう。
改善要望を出す
SSL対応が叫ばれているこの時代に、リファラ必須のASPは、もはや時代遅れです。みんなで改善要望を出しましょう。
改善要望が多ければASPもSSL対応に動くでしょう。
そのようなASPをやめる
時代遅れのASPを使うのを中止するのも一手です。
アフィリエイターが減れば、ASPも対策に動いてくれるでしょう。
自動付加をオフにする(非推奨)
せっかくセキュリティ対策のために実装されたrel="noopener noreferrer"の自動付加機能ですが、無理矢理停止させることもできます。
ただし、セキュリティ対策のための機能を無理矢理オフにするわけですから、良い対策とは言えません。
functions.phpを修正してこの機能をオフにする方法がこちらのフォーラムに載っていましたので、念のため紹介しておきます。
// Note that this intentionally disables a tinyMCE security feature. // Use of this code is NOT recommended. add_filter('tiny_mce_before_init','tinymce_allow_unsafe_link_target'); function tinymce_allow_unsafe_link_target( $mceInit ) { $mceInit['allow_unsafe_link_target']=true; return $mceInit; }