トップ » はるかのひとりごと » SEO » サイト内検索画面は検索エンジンに対してnoindexにすること
こんにちは。
鈴木はるかです。
今回は、かなり重要な事をお知らせします。

WordPressでは、標準のインストールで検索結果画面はnoindexになっていません。
noindexになっていないと何が起こるのでしょうか?
非常に危険な状態となりますのでよく読んで対処してください。


1.検索結果攻撃の概要

WordPress検索結果攻撃(WordPress Search Result Attack:銘々あたしw)の概要です。
WordPressと書きましたが一般サイトでサイト内検索を実装している全てのサイトが考慮しなければならない事です。

今回の攻撃を受けるとGoogleなどの検索結果の画面は、次のようになります。

検索結果画面に宣伝したい文句と、URLなどが表示されます。
httpなどを指定するとうまく機能しないので、ドメインだけが多いです。
具体的には、以下の状態となります。

検索結果攻撃を受けた状態
検索結果攻撃の図

この攻撃はを実行するのは、とても簡単です。

Googlebotは、外部からのリンクが発生すると、そのページのリンクの有効性や状態を確認するため、該当サイトに確認に行きます。
つまり「攻撃側の捨てサイト」から以下のようなリンクを張るだけで良いのです。

例文
<a href="https://www.harukas.org/blog/?s=私のブログはexample.comです。各種ブランドの偽物製品を大安売りしています。" >偽物販売大好き</a>

簡単ですね^^;

さて、この攻撃を受けたサイトはどうなるのでしょうか?
先に説明した通り、Googlebotはサイトを確認にいきます。
この画面をクロールし、独自性のあるコンテンツ(この場合偽物販売)があると判断すると、Googleは当該コンテンツをインデックスしようとします。

インデックスとはGoogleでキーワードで検索したときその結果に情報を表示する事です。

そうです。
はるかのひとりごと 偽物販売などで検索したとき、このページが表示されてしまうのです。

これは、サイトを運営する上でとっても大きな損失になるに違いありません。
私のサイトのような純情無垢なコンテンツにいかがわしい文言や、ドメインを表示させる事が可能になってしまうのです。

では、実際に攻撃を受けたサイトの検索結果を見てみましょう。

WordPress Search Result Attackの被害状況(2017.02.17の検索結果)
WordPress Search Result Attackの被害状況

今のGoogleで攻撃が成功している状態を別画面で見る

このように中国crackerにより、検索結果に不当な文言を仕込まれています。
単純に、WordPressを設定してサイトを公開しているだけで、このような目に逢います。
その理由は、Googleにインデックスする必要が無いページを、インデックスするように設定にしているからです。

また本ページではWordPressでの対策をメインに記述しますが、この攻撃はWordPressに限らず、ECサイトの検索機能、一般構築サイトのサイト内検索機能など、すべてで発生する可能性があります。

外部のクエリ(文字列)を自サイトに表示する仕組み全てが、この攻撃の標的の対象になるので以下の観点で見直しが必要です。

・検索ボックスがある
・検索結果を画面に表示する


顧客の利便性を考慮すると、検索ボックスや検索機能というのは必須機能です。
安易に機能の削除などを考えないでください。
問題なのは、フリー文字列を表示する検索結果画面をインデックスする仕様になっているか否かです。

検索エンジンからみれば、商品(記事)ページをインデックスしているのであれば、検索結果画面を再びインデックスする必要性は全くありません。なので、検索結果はインデックスしない仕様にするのが当然の施策となるわけです。
これ以外にも404、各種エラー画面(ログインエラー)などインデックスをしても意味がないものも該当します。

さて、対策です。

2.検索結果攻撃の対策

対策は、非常に簡単です。
Google(Yahoo他Googleのエンジンを使っている90%の検索エンジン)とBingは、検索エンジンに対してインデックスをしないという命令が使えます。

これは、検索エンジンへの提案ではなく、絶対命令です。

なお、少々SEOに知識のある方はすぐにrobots.txtでクローラをブロックしようとします。
これは、全く意味の無いの行為ですので注意してください。
robots.txtでのブロックは、クロールをブロックする命令なので、インデックスしないで欲しいという命令では無いのです。
この違いは大きいので、よく認識してください。
(SEOの中級テストには必ず出題されます。テストってなんだw)

robots.txtでクロールをブロックし、noindexを指定する
→検索結果にそのサイトが表示される可能性があります。
絶対命令であるnoindexがブロックされ機能しない

robots.txtは阻害せず、noindexを指定する
→検索結果にそのサイトが表示されることはありません。

ということで、今回の対策はnoindexの指定方法です。
指定方法は、次の3つがあり各々メリットが違いますので、お好きな項目で設定して下さい。
また、既にプラグインを搭載していたり、優秀なテーマの場合は、noindexになっているかもしれません。

検索画面/404画面などので、右クリック→ソースの表示を行い、noindexで検索しMetaタグが記録されているか確認して下さい。

2.1 プラグインを使う

これは簡単なので、オススメです。
私はYoastSEOを使っているのでキャプチャは、これを使います。

noindexページ

見ての通り、この設定は「当たり前すぎて」インストールしただけで自動的に設定され、解除の方法はありません。
非常に安全です。

YoastSEOは、この他にも各ページのnoindexを制御したり、サイトマップを作ったりタイトルを修正したりしてくれる万能プラグインです。私はサイトマップのために使っている感じです^^;
設定は色々影響するので、注意してくださいね。
特にパーマリンクの変更を強要してきますので、注意してください。

なお、同じような機能を持ったAll in One SEOPackなども使えると思いますが、私は使った事が無いので各自で調べてください。

2.2 HEADを編集する

noindexを指定するだけで、プラグインなど使いたくないという人は多いと思います。なので、テーマの編集方法を説明します。

これは、カスタマイズ初級の方には便利だと思います。
meta文を記載するheader.phpを編集する方法です。
ただし、親のテンプレートを編集するとテーマが更新されたときにリセットされますので、子テーマに記載します。

使う関数は以下の二つです。
・is_search()  →検索結果画面かどうか判断します。
・is_404()   →404ページかどうか判断します。

header.php
<?php if( is_search() || is_404() ): ?>
    <meta name="robots" content="noindex,follow"/>
<?php endif; ?>
followというのは、Googlebotに対してリンクをたどりなさいという命令です。
ここは触る必要はありません。

なお、header.phpの記載場所ですが、必ず
<head>から</head>までの間に記述して下さい。
Bodyに記載しても機能するようですが、ルール違反なのでhead内が良いです。

2.3 functions.phpを編集する

これは、コールバック関数を使う手法です。
中級以上の方が対象です。私が説明するまでもないですね。
(ちなみに私は初級ですw)
割り込み番号をカスタマイズされている方は的便変更してください。

functions.php
// 検索結果及び404ページをnoindexにする
function add_noindex_action(){
    if( is_search() || is_404() )
    echo '<meta name="robots" content="noindex,follow">';
}
add_action('wp_head','add_noindex_action', 4 );

3.まとめ

今回は、noindexという少しでも間違うと致命的な命令を操作します。
よくソースコードなどを確認してからデバッグをしてください。
また、インデックスは多い方が良いみたいな風潮がありますが、全く違います。
インデックスはコントロールすべき物なのです。不要な物をインデックスする事が無いように検索エンジンを使ってくれたらと思います。

・不要なページをインデックスすると思わぬ事が発生する
・検索結果及び404ページはnoindexにする

ではでは。次回のSEO記事で、また逢いましょう。
またね~♪
この記事は 2023年08月24日00時32分 に更新

コメント一覧

  1. 早田正司
    この記事探してましてました。
    たいへん分かりやすい記事です。
    Search Consoleにてカバレッジ除外が2万位で日々増えてるので気持ち悪く、SEOにも影響があるかと思い探してました。しかしサイト内検索機能を狙ったスパム攻撃事態をどうにかしたいのですが手立て無しのようですね
    • はるか
      今のアルゴリズムなら、サイト内検索結果というのをある程度特定することが出来ると思います。
      しかし、一斉に非表示にしないのは「価値がある検索結果が残っている」からだと思います。
      Googleは、価値あるコンテンツが検索結果でインデキシングされるようになっていれば、それも利用するという考えのようです。
      SEOを理解している我々は、これ以上被害を増やさないようにサイトの設計をしたり啓蒙したりしなければならないのでしょうね。
  2. はるか様、
    はじめまして(o*。_。)oペコッ。

    こちらの記事、とても参考になりましたありがとうございます。

    それとは別なのですが・・・、
    フッターの一番下部分に、セッションがipv6による接続とか本日の訪問数が表示されているところがありますが、どのようにしたらできるのでしょう?

    お忙しい中、恐れ入りますが、
    ご教授頂けましたら幸いです。
    • はるか
      こんにちは。
      noindexは結構重要ですね。
      最近では、テーマでデフォルト実装されているので、わすれつつある中身ですが・・・

      下部のセッションの種類は、サーバーに接続している環境変数で、REMOTE_ADDRがIPv4だったら?という判断を
      正規表現で調べて、マッチしたらv4でそれ以外はv6としています。

      このセッションは <?php
      $ipv4 = '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$';
      if (preg_match('/' . $ipv4 . '/', $_SERVER['REMOTE_ADDR']) ) {
      echo ' IPv4  で確立しています';
      }else{
      echo ' IPv6  で確立しています';
      }
      ?>


      こんな感じですね。
      カウンターは、手製ので汚いコードです。
      参考にはなりません。
  3. こんにちは(^-^)
    はるか様。

    丁寧に教えてくださりありがとうございます。(o*。_。)oペコッ

    >noindexは結構重要ですね。
    最近では、テーマでデフォルト実装されているので、わすれつつある中身ですが・・・


    ですね!!

    上記の正規表現、凄いです!!

    あとechoの後は、
    IPv4とIPv6が逆ではないでしょうか?


    私の勘違いでしたら、度重なるコメント申し訳ありません。
  4. はるか様、こんにちはペコリ(o_ _)o))

    すみません。

    echoの後のipv4とipv6は、はるか様の記述通りですね。

    申し訳ありませんでした。

コメントする

Gravatarに登録してログインすると自分専用のアバターを表示できます。

コメントを残す





鈴木はるかのプロフィール画像
(Haruka Suzuki)
仕事:金融システムのSE
好きな物:スイーツ、絶景
趣味:お菓子/アニメ/多趣味

人気の高い記事

  1. 食戟のソーマゆきひら流進化形のり弁を再現
  2. 葬送のフリーレン 馬鹿みたいにでかいハンバーグを再現
  3. ゆきひら流シャリアピンステーキ丼
  4. 食戟のソーマゆきひら流 鶏卵の天ぷら丼を再現
  5. 食戟のソーマ5話のさわらおにぎり茶漬け
  6. ゆきひら流タラのお柿揚げ
  7. アニ菓子とは
  8. 時限式・生意気小僧風 原始肉(マンガ肉) ゆきひら・真を再現
  9. 食戟のソーマ16話のりんごのリゾットを再現
  10. 家電はなぜ壊れるのか?専門家が回答してみた
  11. ゆきひら流ビーフシチュー秋の選抜スペシャルを再現
  12. 食戟のソーマ 胡椒餅(フージャオピン)を再現
  13. 食戟のソーマ13話ゆきひら流スフレオムレツ
  14. 食戟のソーマ 熊肉のメンチカツを再現
  15. 食戟のソーマ ゆきひら流焦がし蕎麦の再現
  16. うずらの詰め物リゾットと卵 生意気小僧風 を再現
  17. 食戟のソーマ 時限式麻婆カレー麺の再現
  18. 北海道講座印のスペシャル豪雪うどんを再現
  19. すみれ印の唐揚げロールを再現してみた
  20. はるかのミルクキャラメル
  21. 食戟のソーマ さつま地鶏の手羽先餃子を再現
  22. ハウルのベーコンエッグを再現
  23. 食戟のソーマ 鹿もも肉の炭火焼き栗のソースを再現
  24. くまみこ第8話で登場した「水かけごはん」
    くまみこ8話の水かけごはんを再現
  25. 食戟のソーマ あんきもなかを再現
  26. 食戟のソーマ第4話の鯖バーグ
  27. 食戟のソーマ チーズフォンデュロースカツ定食を再現
  28. Airのどろり濃厚ピーチ味を再現
  29. NVIDIAの環境で動画を再生すると画面が真っ黒になる
  30. 少女終末旅行 イモのレーションを再現

月別の過去記事を見る

最近投稿されたコメント

  1. はるか (2024年10月08日)
    さばねこさん、こんにちは。解釈で感動したと思ってくれてありがとうございます。私はBD購入で最初に聞いたときから、ほむらとまどかの境界だと思っ…
  2. さばねこ (2024年09月15日)
    ♪「届かないほど 近くて遠い」>円環の理になってしまった、まどかとの距離・・・>のようにも読めますが、それだと今までの流れを壊す…
  3. Y (2024年08月18日)
    美味しそうです!食べてみたい!
  4. はるか (2024年08月15日)
    アルギン酸ナトリウムは、日本医薬品添加剤協会の実験などで各種検査をされていますが、有害性の報告はありません。よって私のレシピにこだわる事無く…
  5. Cocoa (2024年08月15日)
    度々すみませんあとアルギン酸ナトリウムは2グラム入れて滴下しても丸い形状にならず薄い膜みたいなものになってしまうのですが2グラム以上入れても…
  6. はるか (2024年08月14日)
    cocoaさんこんにちは。水滴の表面が固まるのは、化学反応なので溶液の濃度に依存します。のり溶液側に反応を阻害するミネラル類が多い場合、反応…
  7. cocoa (2024年08月14日)
    食感もゼリーみたいな食感で、いくらのようなプチンと言う食感は無いのですがナトリウムの入れすぎとかですかね策があれば教えていただきたいです
  8. はるか (2024年08月12日)
    Cocooaさんこんにちは。アルギニン酸ナトリウムは別のもの(どこで買ったか不明)ですが、乳酸カルシウムはリッチパウダーのものです。
  9. Cocoa (2024年08月11日)
    はるかさんこんにちはアルギン酸ナトリウム、乳酸カルシウムはリッチパウダーのやつですか?
  10. はるか (2023年12月08日)
    羽田野さんご指摘、感謝です。言い訳ですが、冷たい空気も東進しているのでそれを表現していました。おっしゃるとおり、誤解を生む可能性がありますの…