概要
HTMLのaタグで新しいタブで開く際によくtarget="_blank"が利用されるが、これには脆弱性があるため対処が必要である。
脆弱性の詳細
Tabnabbing(タブナビング)という攻撃に利用されるものであり、遷移先ページから遷移元ページのタブが操作ができてしまうというものである。
対処方法
aタグ内にrel="noopener"を追記することで対処できる。
例としてexample.comにリンクする際のコードを示す。
<a href="example.com" target="_blank" rel="noopener">example.comへのリンク</a>
ただしnoopenerはIE等の一部ブラウザに対応していない。

そのためrelにnoreferrerという属性値を追記する。こうすることでIE等noopenerが対応していないブラウザに対しても脆弱性対策ができる。
<a href="example.com" target="_blank" rel="noopener noreferrer">example.comへのリンク</a>
注意点
noreferrerをつけるとリファラー(どのサイトからリンクされてきたかという情報)が消えるため、アクセス解析やアフィリエイト等に影響が出る場合がある。
上記の例の場合、どのサイトからexample.comにアクセスしてきたかが分からなくなる。
また、この脆弱性はtarget="_blank"特有のものではなくtarget="_new"でも確認された。
まとめ
| コード | 内容 |
|---|---|
<a href="example.com" target="_blank">example.comへのリンク</a> |
脆弱性あり |
<a href="example.com" target="_blank" rel="noopener">example.comへのリンク</a> |
一部ブラウザが非対応。やむを得ない場合以外は使用すべきではない |
<a href="example.com" target="_blank" rel="noopener noreferrer">example.comへのリンク</a> |
脆弱性対策されている |