HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTMLのrel="noopener"属性の使い方(セキュリティ上とても重要)

rel="noopener"属性は、target="_blank"属性を使ったアンカーリンクにおける外部リンクのセキュリティに直接関わるため、知っておくべき最も重要なHTML属性のひとつです。

target="_blank"を指定すると、リンク先が新しいブラウザタブで開きます。

以下はrel="noopener"属性を付けたリンクの例です。

<a href="https://www.youtube.com" rel="noopener" target="_blank">youtube.comへのリンク</a>

rel="noopener"の仕組み

ウェブサイトの外部リンク(target="_blank"付き)にrel="noopener"を追加すると、リンク先のサイトがwindow.openerプロパティを通じて、あなたのページ(windowオブジェクト経由)にアクセスすることを防げます。

つまり、リンク先のページに悪意のあるコードが仕込まれていた場合、そのコードはwindow.openerというバックドアを通じてあなたのサイトを操作し、ユーザーのブラウザを乗っ取って、個人情報を盗んだりマルウェアをインストールしたりする危険なフィッシングサイトへリダイレクトする可能性があるのです。

こうした理由から、WordPressでは新しいタブで開くすべての外部リンク(target="_blank"属性を使用するもの)に、セキュリティ対策として自動的にrel="noopener"属性が追加されるようになっています。

メリットがデメリットを大きく上回るため、サイトの種類を問わず、同じ対策を講じることをおすすめします。

rel="noopener"とSEO

朗報です。rel="noopener"はSEOに一切影響を与えません。

noopenerを使うデメリット

唯一知られているデメリットは、rel="noopener"がInternet Explorer 11に対応していないことです。

とはいえ、それほど心配する必要はありません。その理由は以下の通りです。

  1. IE11はまもなく歴史に幕を下ろす(Microsoftがサポートを終了するため)。
  2. IE11でアクセスした訪問者でも、リンク自体はクリックできる。ただしrel="noopener"の効果が働かないだけ。

さらに言えば、責任あるサイト運営者であれば、そもそも外部リンク先の選定には注意を払うはずです。信頼できないサイトへユーザーを誘導しなければ、このセキュリティ問題はほぼ気にする必要がなくなります。

代替案1:「noreferrer」を使う

Internet Explorerユーザーのことが気になる場合は、以下のようにアンカーリンクにnoreferrer(IE11でもサポートされている値)を追加しましょう。

<a href="https://www.youtube.com" rel="noopener noreferrer" target="_blank">youtube.comへのリンク</a>

noreferrerは、HTTPヘッダーからリファラー情報を除去することで、リンク元(あなた)からリンク先のサイトへ情報が送られるのを防ぎます。

ただし、rel="noreferrer"はサイトのアナリティクスに影響します。リンク先のサイトはあなたがリンクしていることを検知できなくなるため、リンク先との提携契約などがある場合には支障が出る可能性があります。

そのため、この方法を使うかどうかは自己判断で行ってください。

rel="noreferrer"とSEO

多くの人が信じているのとは逆に、rel="noreferrer"がSEOに直接影響を与えるという証拠は、少なくとも現時点では存在しません。ただし前述の通り、データ収集やアナリティクスに干渉するため、状況によっては間接的に不利益を被る可能性はあります。

なお、noreferrernoopenerを、nofollow属性(こちらはSEOに確実に影響します)と混同しないようにしましょう。

代替案2:target="_blank"を使わない

アンカーリンクからtarget="_blank"属性を外してしまえば、これらの問題をすべて回避できます。

target="_blank"がない場合、サイト上のすべてのリンクは、クリックした瞬間にユーザーをあなたのサイトからリンク先のサイトへ移動させます。

ただし、target="_blank"を使わないことは、SEO、特に直帰率に悪影響を及ぼす可能性がある点には注意が必要です。

特にチュートリアル記事の中では、ユーザーがリンク先のサイトの何かに気を取られて、あなたのサイトのことを忘れてしまう恐れがあるため、この方法は避けたほうがよいと考えます。

「読者が外部リンク1つであなたのコンテンツを忘れるなら、そもそもコンテンツの質が低いのではないか」と反論する人もいるかもしれません。一理ありますが、人はもともと注意散漫になりやすく、それが多くの場合自分にとって不利益につながるという事実もあります。

このテーマは単純な白黒で語れるものではなく、別の見解にも柔軟に耳を傾ける姿勢が大切です。

参考リソース

外部リンクに関するセキュリティ問題については、以下も併せてご覧ください。

  1. HTMLのmultiple属性とは?複数選択を可能にする使い方を徹底解説

    HTMLのmultiple属性は、ユーザーが複数の値を選択・入力できるようにするための属性です。この属性はブール型(真偽値)属性であり、<input>要素と<select>要素の両方で使用できます。特に、HTMLフォームで複数のファイルをアップロードしたい場合にmultiple属性が活躍します。また、この属性は「email」および「file」タイプの入力フィールドに対応しています。multiple属性の主な特徴fileタイプ:ファイル選択ダイアログで複数のファイルを同時に選択可能になります(CtrlキーやShiftキーを押しながらクリック)。emailタイプ:カンマ区切

  2. HTMLのlist属性とは?datalist要素で入力候補を表示する方法を解説

    HTMLのlist属性とはHTMLでは、<datalist>要素を使用して、あらかじめ定義された選択肢のリストを作成できます。このリストは<input>要素(入力欄)に対して適用され、ユーザーが文字を入力すると、定義済みの選択肢が候補として自動的に表示されます。<input>要素のlist属性は、対応する<datalist>要素のidを参照することで、入力欄と選択肢リストを関連付けます。このlist属性は、HTML5で新たに導入された機能です。list属性の基本的な使い方list属性を使うには、以下の2つのステップを行います。<datali