rel=”noopener” ってなんだ?

2025.07.04 09:00
2025.07.04 11:15
rel=”noopener” ってなんだ?

サイトを作っていて、外部リンクにこんな記述がされているのを見つけました。

<a href="https://example.com" target="_blank" rel="noopener">外部リンク</a>

いやいや、target="_blank" はわかる。新しいタブで開くやつね。
でも、その隣の rel="noopener" って何…?
知らなかったので調べてみました。

target=”_blank” だけだと危ない?

まずおさらいすると、target="_blank" はリンク先を新しいタブやウィンドウで開くための属性です。
調べたら、target="_blank" って便利だけど、それだけだと危ないらしいんですよ。
どうやら、リンク先のページが「親ウィンドウ」を操作できちゃうらしくて。
JavaScript の window.opener っていうのを使うと、元のページを書き換えたり、フィッシングみたいなことができるんだとか。

へぇ〜。そんなことができるんですね…。知らなかった。

rel=”noopener” が守ってくれるっぽい

で、そこで出てくるのがこの rel="noopener"
これをつけると、リンク先から親ウィンドウへのアクセスが遮断される、らしいです。
つまり、window.opener が無効になるっぽい。

「親をいじれなくするフタ」みたいなもんですかね。

rel=”noreferrer” もあるらしい

似たようなのに rel="noreferrer" ってのもあって、これは noopener の効果に加えて、リンク先にリファラー情報も送らない、ってことらしい。
ただ、そこまで気にしなくても、外部リンクに対してはとりあえず noopener つけとけばいいっぽいです。

まとめ

「外部リンクで新しいタブを開くときは、親を守るために rel=”noopener” もつけとくのが今の常識」
…ってことみたいです。

つまり、こんな感じに書くのが正解っぽい。

<a href="https://example.com" target="_blank" rel="noopener">リンク</a>

いや〜、今まで知らずにずっと target="_blank" だけで書いてたけど、こういう理由があったんですね。調べてみると、「ちゃんと意味があるんだな〜」って思いました。

今回は以上です!