【WordPress】サイト内検索結果がSEOスパム攻撃された!状況と行った対策まとめ

※当ブログではアフィリエイト広告を利用しています。

普段あまり見ていないGoogleウェブマスターツールを何気なく見たところ、HTMLの改善でタイトルタグの重複エラーが大量に発生していることに気が付きました。

調べたところ当サイトWordPressのサイト内検索結果ページに対するかなり大規模なSEOスパム攻撃をされていたため、経緯と対策をメモします。

SEOスパム攻撃されていたことに気づいた理由

気づいた時には尋常ではない事態になっていました。

異常な数のタイトルタグの重複が出ていた

まず最初に異変に気づいた理由はウェブマスターツールの「HTMLの改善」で異常な数のタイトルタグの重複が出ていたためです。

たまにチェックすると数個程度のエラーは出ているのですが、今回は「650」個というあり得ない数のエラーが出ていました。
ウェブマスターツール タイトルタグ重複エラーが異常な数

さらにその内容は当サイトにあるはずのない、ブランド物(アルマーニやロレックス等)関連のコピー品を表すようなものばかりでした。全文は表示しませんが以下のスクリーンショットは「HTMLの改善」に表示されていたエラーの一部です。
ウェブマスターツール タイトルタグ重複エラーの原因

どのページが「重複するタイトルタグのあるページ」にあたるのかを見てみたところ、対象となっているのはすべてWordPressのサイト内検索結果のページ(URLが/?s=ではじまる)でした。
ウェブマスターツール タイトルタグ重複エラーの詳細

ためしに問題となっているサイト内検索結果ページを開いてみると、以下のとおり記事が見つからなかった場合のページが開きます。そのためサイト自体がハッキングされたわけではありませんが、Googleにはこの内容のページがインデックスされてしまっているようです。
タイトルタグ重複エラーのURLを開いたところ

異常な数のページがGoogleにインデックス登録されていた

2つ目の理由はウェブマスターツールのインデックス ステータスを確認したところ2015年3月29日を境に当サイトでありえるはずのない異常なページ数がGoogleのインデックスに登録されていたためです。

まず以下は3月22日時点のインデックス登録ページ数です。「969」というページ数ですが現在の記事数が約300のため、カテゴリ別ページや月別アーカイブ等を全て含めればあり得る数字です。
ウェブマスターツール インデックスに登録されたページ(正常)

それに対して3月29日時点では大幅にインデックス数が増えており、その数は約18万ページとなっています。いくらなんでもこの数はおかしいです。
ウェブマスターツール インデックスに登録されたページ(異常)

以上よりWordPressのサイト内検索結果が大量に行われ、その結果ページをGoogleにインデックスさせるSEOスパム攻撃を受けていることは間違いないと判断しました。

WordPress検索結果ページヘのSEOスパムに対して行った対策

この勢いでサイトに関係ないキーワードの検索結果ページが大量にGoogleにインデックスされるのはまずいため、WordPressのサイト内検索結果ページはGoogleなどの検索エンジンにインデックスされないようにする対策を行いました。

また、カテゴリページ、タグページ、月別アーカイブページも検索エンジンにインデックスする必要はあまりないので、ついでにそれらのページもインデックスの対象外となるようにしました。具体的にはWordPressのheader.phpに以下のタグを加えました。

<?php if(is_search() || is_tag() || is_category() || is_month()): ?>
<meta name="robots" content="noindex,follow" />
<?php endif; ?>

上記のタグを追加することにより、サイト内検索結果、カテゴリ、タグ、月別アーカイブのページはメタタグnoindex,followが表示され、Googleなどの検索エンジンにインデックスされなくなります。

noindex,followは検索エンジンに対して「インデックスはしないけれどサイトのリンクは辿って欲しい」ということを伝えるという意味があります。詳細は下記サイト様を参考にさせて頂きました。

この「noindex,follow」とは、metaタグに記述する設定で、検索エンジンに対し、「このページはインデックスしなくて良いけど、リンクだけは辿っておいてね」というメッセージを伝える役割があります。

対策の結果

上記対策を行うことにより個別記事ページでは、noindex,followタグが表示されないため、Googleのインデックス対象となります。
個別記事ページではnoindex followが表示されない

それに対してサイト内検索結果ページではnoindex,followタグが表示されるため、Googleのインデックス対象となりません。
サイト内検索結果ではnoindex followが表示される

引き続きウェブマスターツールの経過観察は行う必要がありますが、これでサイトに関係ないキーワードの検索結果ページが大量にGoogleにインデックスされることは防ぐことができます。

おわりに

WordPressのセキュリティにはかなり気を使っていますが、思わぬところから間接的な攻撃を受けました。調べてもあまり情報がないので割と最近の手口なのかもしれません。

本対策を行ったことによるタイトルタグ重複エラーの数やGoogleにインデックスされたページ数については、結果が変化したら追記します。