※特に推敲や検証はしてないので、各自で判断しながら参考にして下さい。あと、間違っている箇所があればご指摘頂けると嬉しいですm(_ _)m
iOS+safari 開いた
iOS+chrome 開いた
android+Chrome 一部端末は開かない— ごれむす(´・ω・`) (@goremusn) August 8, 2019
事の発端は、ごれむすさんのツイート。
つまり、一部のOSとアプリの組み合わせによっては、「target=”_blank”」があるとリンク先に遷移できないという報告でした。
ただ、wordpressのver4.7.4以降は「target=”_blank”」があるリンクに対しては、自動で「rel=”noopener noreferrer”」が付与されるので、結論そこまでビビるような話ではないです。
とは言え、他のCMSを使ってサイトを作成している人にとってはかなり面倒臭い報告となったことは間違いないです。
よく分かる目次
そもそも「target=”_blank”」には脆弱性がある!?
普段から何気に使う「target=”_blank”」ですが、こいつにはちょっと厄介な脆弱性があり、すでに各解説サイトでも警鐘を鳴らしている方々が大勢います。
※詳しくは「target=”_blank” 脆弱性」で検索すると沢山でてきます。
個人的に分かりやすかったのはこちらの方の記事。
target=”blank” にはセキュリティ上の脆弱性もあります。
リンク先のページでは window.opener を使用して親ウィンドウのオブジェクトにアクセスしたり、
window.opener.location = newURL によって親ページの URL を変更したりできます。
aタグで外部にリンクをする場合、外部のリンクが完全に信用できる自社サイトだったりする場合はその必要はないのですが
単なる勝手リンクである場合は「rel=”noopener”」をつけるべきということです。
つまりリンク先でJavascriptを使えばリンク元を操作できるようになるというものです。
では具体的にどういった操作ができてしまうのか?
リンク先のページのソースのJSに
window.opener.location = http://hogehoge.com
と書かかれている、自分のサイト(リンク元)が勝手にhogehoge.comに置きかわってしまいますのでそこでフィッシングに利用されたりウイルスを仕込ませるなんてことができてしまいます。
しかしながらリンク先のページはちゃんとしているところにリンクしているから大丈夫!って思っていませんか?
いえいえそんなことはありません。
ホームページは日々どんどん閉鎖されていきます。
閉鎖後にそのドメインが悪意ある人にわたりそのような地雷をしこまれるという可能性は大いにあります。
そういった観点から外部サイトへのリンクは気をつけましょう!
ちなみにWordpressには投稿時に「リンクを新しいタブで開く」にチェックをいれると自動的に「rel=”noopener”」が付与されます。
ちなみにデモを作ってみましたのでお試しください!
https://www.1st-net.jp/blog/sample/blank.html
要するに「 target=”_blank” で遷移したサイトが javascript を悪用すれば、遷移元のあなたのサイトURLを遷移させることができる」ということです。
この方々の解説記事もとても分かりやすいので必見です。
要するに、target=”_blank”で遷移した先のページが、悪意を持ってjavascriptを使うと、遷移元のページが別のページに移動させられてしまうのが最大の問題点です。
特に数年後、ドメインの運営者が変わり、悪意のある第三者が中古ドメインとして取得した場合が一番リスキーです。
また、遷移先のページで負荷の高いjavascriptが実行されると、リンク元のページのパフォーマンスが低下するおそれもあるそうな。
これらのことから「target=”_blank”」は脆弱性があるから危険だよ!と先人たちは警鐘を鳴らして下さっていました。
「target=”_blank”」の問題点
- 遷移先の意図でURLを移動させる事ができる
- 遷移先のドメイン運営者が変わった時が危険
- 場合によってはフィッシングサイトに遷移させられるかも
そして、「target=”_blank”」の脆弱性を克服するために「rel=”noopener”」という要素があり、
wordpressのver4.7.4以降は「target=”_blank”」があるリンクに対しては、自動で「rel=”noopener noreferrer”」が付与されることになっています。
なので、wordpressを使ったアフィリエイターやブロガーは、結論、そこまで深刻な話ではないです。
「target=”_blank”」の脆弱性を悪用した、広告モデルはアダルトサイトには沢山あるじゃろうて。
健全な青年男子諸君なら数々のアダルトサイトの事例を思い起こせば心当たりがあるだろうて。
正直に答えてみなさい。あなたも一度はavgleやthis avで検索したことがゲフン、ゲフン。
「target=”_blank”」が開かない問題はアフィリエイトタグにどう影響する?
それ、僕もすごく気になって、以前ASPへ問い合わせました。
【target="_blank" 外していいよ】
・レントラックス【target="_blank" 外しちゃダメ】
・A8
・バリューコマースこれ、コンバージョンに影響ありそうですよね。https://t.co/laTgdQiJgc
— 北野 啓太郎@フリーランスWEBコンテンツクリエイター (@KeitaroKitano) August 8, 2019
実は、過去すでに北野さんという方が、target=”_blank”問題について、各ASPに問い合わせをして下さっていました。
「target=”_blank”」を外すことに関して
A8.net「ご遠慮ください」
バリュコマース「公認することができません」
レントラックス「外しても良いよ!」「rel=”noopener noreferrer”」が付与されることに関して
A8.net「正常に作動しなくても保証できません」
バリュコマース 「すべてのお支払いができなくなる場合もある」
レントラックス「リファラ情報が取得できなくなるよ」※一部、見やすくするため改変しています。
各ASPによって判断が異なるみたいですが、一番無難なのは「target=”_blank”」を削除してページ遷移ができるようにするか、
リファラーが取れなくても「rel=”noopener noreferrer”」の付与を許して運用するかの2択になりそうです。
この回答事例をみると、a8とバリュコマはやる気があるんですかね…。
特にa8に至っては、どこがお客様満足度no1なのか本当に意味が分からん…。
やっぱりレントラックスが一番だね!みんなでレントラックスを応援しよう!
アフィリエイターができる「target=”_blank”」問題の解決案と考察
セキュリティを踏まえて書くとたぶんこんな感じ?ぼくも詳しくないのでエロい人に聞いているんですが。
①blankあり&noopenerなし セキュリティ✕:遷移できない
②blankあり&noopenerあり セキュリティ◯:遷移できる
③blankなし セキュリティ◯:遷移できる— ごれむす(´・ω・`) (@goremusn) August 8, 2019
アフィリエイターの気持ちとしては「アフィリタグの改変は避けたいけど、target=”_blank”でページ遷移ができないの何となくヤダ」という所だと思います。
なので、ごれむすさんの提案の通り、target=”_blank”なしでいくか、noopenerを付けて運用するかの2択になると思います。
「target=”_blank”」の解決案
- 「rel=”noopener”」を付与する
- 「target=”_blank”」を削除する
ただ、裏技的な方法としては、メタリフレッシュにアフィリリンクをぶち込むという荒業もあったり。
けど、ASPの利用規約で一発アウトもありえるし、サイト遷移の手段としてGoogleが非推奨なので、あまりおすすめはしません。
対処法①:「rel=”noopener”」を付与する
wordpressのver4.7.4以降は、自動で「rel=”noopener noreferrer”」が付与されるので、wordpressでサイト運用している人は最新verにアップデートすれば問題は解決です。
wordpressでブログやアフィリエイトをしている人の多くは、これで問題が解決します。
ただ、シリウスなどの他のCMSを使っている場合には、それぞれの開発者に確認してみることをおすすめします。
対処法②:「target=”_blank”」を削除する
もう一つの方法としては「target=”_blank”」をそのまま削除するという方法。
ちなみに、wordpressのfunction.phpに下記のコードを入れたら、wordpress内の「target=”_blank”」はすべて消せる模様。
add_filter('the_content', function ($the_content){$the_content = preg_replace('/ +target=["][^"]*?["]/i', '', $the_content);$the_content = preg_replace('/ +target=['][^']*?[']/i', '', $the_content);
return $the_content;
}, 999999999);#自己責任でお願いしま#target外すやつ— あきラー@あきラー (@yanagi195) August 8, 2019
ただ、僕は検証していないんので、どなたか人柱になって検証して下さい。
あと、function.phpをいじる時は、必ずバックアップを取ってからやりましょう。しくると泣きます。
また、wordpress中でも「cocoon」を使っている人であれば、わいひら氏がすでに簡単な対応策を案内されています。
リンクでtarget="_blank"をを使って新しいタブで開く必要がないのであれば、Cocoonの場合は「Cocoon設定→本文→外部リンク設定」の外部リンクの開き方」を「同じタブで開く(_self)」にすれば万事解決かと思います。 pic.twitter.com/eJdQATtQ5z
— わいひら@寝ログ (@MrYhira) August 8, 2019
この辺の未来予知の素晴らしさは本当にわいひら氏は神としか言いようがありません(笑)
ちなみに、わいひら氏が運営されている「寝ログ」はめちゃくちゃ為になる情報が多いので、ぜひチェックされたし。
今後の流れを考えると「target=”_blank”」は衰退する?
Twitter上では「target=”_blank”」の騒動で「target=”_blank”はいらない子?」という発言があります。
というか、このスマホ時代にtarget="_blank"自体がそんなになくてもいい説あるw
— ひつじ@JIN: R制作 (@hituji_1234) August 8, 2019
ひつじ先生はこうおっしゃられてますが、PCのヘビーユーザーの僕としては正直あった方が便利なんだけどなぁと思ったり。
でも、スマホネイティブの人たちからすれば、target=”_blank”の意味は確かに薄れているのも頷けるんですよねぇ…
とりあえず、僕は今回のtarget=”_blank”騒動は静観の方向です。
というか「rel=”noopener noreferrer”」がついても、リファラーが取れないだけで、普通にアフィリ報酬は発生するんで、僕は特に気にしたことはありません。
万が一、target=”_blank”が全部ダメってなっても「Search Regex」等を使えば、一括置換で解決できる訳ですし。
それに、ほっといても、世界中のド変態さん達がこの問題解決に向けてきっと動いてくれるさ★
それまでの間は、各自がやるべき事に集中して、E-A-Tやymyl問題の解決に向けて集中していきましょう★