サイト内検索 スパム攻撃され対策と結果まとめ|WordPress

ソフトウエア
知りたいこと。解決できること
  • サイト内検索をプラグイン無しで無効化したい
  • サイト内検索を悪用したスパム攻撃の対策をしたい

この疑問に回答します。

WordPressのサイトを長年運用していると悪意あるアクセスもやってきます。運営サイトの評価をGoogleが落とす可能性があるので、悪意あるアクセスを放置せずにしっかりと対策を行いましょう。このサイトで実施している対策を紹介します。

WordPressのサイト内検索について

WordPressのサイト内検索とは

WordPressはサイト内検索が標準で搭載されています。サイト内検索と言われてもピンとこないと思いますので実際のウェブ画面をみてください。誰もが一度は見たことあると思います。

WordPressのサイト内検索
WordPressのサイト内検索

サイト内検索のパーツがあると、ウェブサイトにアクセスしたユーザーは検索したい語句を入力しサイト内にある記事を検索し読みたい記事を見つけることが出来ます。

もし、サイト内検索のパーツが無ければ、検索機能が出来ないと思ってしまいますが、実は違います。

特定のURLにアクセスするとサイト内検索の結果画面を表示することができます。

WordPressで動作しているブログで、次のような文字列「/?=文字列」を入力してアクセスしてみてください。

WordPressのサイト内検索
WordPressのサイト内検索

サイト内検索のパーツから入力しなくても、同じように検索結果の画面が表示されます。

WordPressのサイト内検索

これがWordPressのサイト内検索が標準搭載と言っている理由です。

サイト内検索スパム攻撃の被害状況を確認(Search Console)

サイト内検索を利用したスパム攻撃を受けているかの確認方法は、Google Search Consoleから確認するのが一番簡単です。

サイト内検索を利用したスパム攻撃を受けると、Search Consoleには下の画像のように見覚え無いURLが多く表示されます。

Google Search Consoleからサイト内検索を利用したスパム攻撃の被害状況を確認
Google Search Consoleからサイト内検索を利用したスパム攻撃の被害状況を確認

実際のGoogle Search Console から確認する手順です。「カバレッジ」からスパム攻撃の被害状況を確認することができます。

Google Search Consoleからサイト内検索を利用したスパム攻撃の被害状況を確認

カバレッジ」を表示させたあと「除外」をクリックすると詳細にリストが表示されます。

  • noindex タグによって除外されました
  • クロール済み – インデックス未登録

2つの項目を確認してください。

noindex タグによって除外されました」は特に気にしなくても大丈夫です。メタタグnoindex,followが付与されているので、Googleなどの検索エンジンにインデックスされません。

ただし、Google Search Console には表示され続けるので、数値が積みあがっていきます。数値が増えると気になって仕方が無い方は、サイト内検索を無効化することをおススメします。

クロール済み – インデックス未登録」は、記事内をGoogleが評価した結果、キャッシュする価値が無いと判断したものです。つまり、サイトへ悪影響を与える可能性がある状態です。

数個ある程度であれば、目くじらを立てる必要はありませんが、数が多くなると影響を否定することが出来なくなります。

「クロール済み – インデックス未登録」に知らないURLが多く登録されていたら、Googleが低評価と判定している可能性があります。早急に対策を実施しましょう。

サイト内検索を利用したスパム攻撃の方法・やり方

どうやってスパム攻撃を行っているのか疑問に思うと思います。方法は意外と簡単です。

方法を理解してスパム攻撃の対策を行うことが重要です。ただ悪用は厳禁です。

  1. スパム攻撃に利用するブログを構築
  2. スパム攻撃ブログに、攻撃対象サイトのリンクをつけて記事公開(/?s=あいうえお)
  3. Googleにクローリングさせる(noindex,followを付けない)
  4. 攻撃対象サイトの Google Search Console に表示される

サイト内検索を利用したスパム攻撃は、非常に簡単な方法で行えることが理解できたと思います。

こんなに簡単だと、サイト内検索のスパム攻撃が無くなることはありません。

簡単に行われる攻撃には、簡単に防御すると考えれば気持ちが楽になると思います。

サイト内検索を利用したスパム攻撃の対策方法

検索結果ページに対策を行う(noindex,followを付与)

検索結果ページを検索エンジンにインデックス登録させないことが対策方法となります。インデックスさせないようにするには、noindexのメタ情報をページに加えるだけです。

ただ、最近のWordPressテーマは優秀なので、サイト内検索の結果ページは自動的にnoindex,followが付与される設計になっています。

WordPressテーマによる対策

私が利用しているCocoonは、自動的にnoindexのメタ情報が付与されています。ソースコードから確認してみました。

サイト内検索の結果ページは自動的にnoindex,followが付与される
サイト内検索の結果ページは自動的にnoindex,followが付与される

つまり、サイト内検索のスパム攻撃には対策済みなので、「手動で対策を実施しなくてよい」ということになります。しかし、後述しますがダメな場合もあります。

functions.phpによる対策

利用するWordPressテーマにnoindexのメタ情報を付加する機能がなければ手動で対策をおこなってください。

noindex設定を追加する場合は、functions.phpにコードを追加する必要があります。

// WordPress サイト内検索結果ページにメタタグを追加する
function search_noindex( $query ) {
	if ( is_search() ) {
		echo '<meta name="robots" content="noindex,nofollow">';
	}
}
add_filter( 'parse_query', 'search_noindex' );

コピペするだけで利用できます。しかし、後述しますがダメな場合もあります。

プラグインを利用した対策(All in One SEO Pack)

noindexを設定するためだけにプラグインをインストールするのはお勧めしません。すでにインストールしているプラグインにnoindexを付与できる機能がある場合は積極的に利用しましょう。

WordPressで多く利用されている「All in One SEO Pack」にはnoindex設定が簡単にできます。

検索の外観]-[アーカイブ]-[Search Page]-[検索結果に表示]-[いいえ

「All in One SEO Pack」はnoindex設定が簡単
「All in One SEO Pack」はnoindex設定が簡単

ダメな場合もある。メタ情報の限界

私のサイトはCocoonを利用しているのでテーマが自動的にはnoindex,followが付与してくれます。しかし何故かインデックスを行おうとした結果が Google Search Console に残っていました。

Google Search Console カバレッジ クロール済み – インデックス未登録
Google Search Console カバレッジ クロール済み – インデックス未登録

Google Search Console 「カバレッジ」の「クロール済み – インデックス未登録」に多くのスパム攻撃の形跡が残っています。

設定では、noindex,followを付与しているので影響を与えない「noindex タグによって除外されました」に分類される想定でした。

Googleのクローラーは想定外(設定を無視する)の動きをする証拠です。

このサイトはサイト内検索を利用していないので無効化する対策を行いました。明確な意図や意思が無いのであれば、無効化することをおススメします。

サイト内検索を無効化する

WordPressの設定にサイト内検索を無効化するための項目がありません。サイト内検索を無効にする場合は、functions.phpにコードを追加する必要があります。

// WordPress標準のサイト内検索を無効化
function search_404( $query ) {
	if ( is_search() ) {
		$query->set_404();
		status_header( 404 );
		nocache_headers();
	}
}
add_filter( 'parse_query', 'search_404' );

WordPressのサイト内検索が使われた場合、強制的に404ページに飛ばし、応答ヘッダーを404に変更します。

詳細をまとめた記事があるので参考にしてください。

関連記事 サイト内検索をプラグイン無しで無効化する手順|WordPress

あとは気長に待っていると、Google Search Console の画面が整理されてきます。

サイト内検索を無効化した結果(Google Search Console)
サイト内検索を無効化した結果(Google Search Console)

まとめ

WordPressのサイトを長年運用していると悪意あるアクセスがやってきます。サイト内検索を利用した攻撃は容易に実行可能です。気づかないうちに被害にあっていることがよくあります。

Google Search Console から確認できるので定期的にチェックを行ってください。

サイト内検索の結果ページにメタタグnoindex,followを付与されているので、評価を下げないはずですが、一部のGoogleのクローラーはサイト管理者の意図を無視してインデックスを試みるようです。

明確な意図が無いのであればサイト内検索を無効化することをおススメします。

コメント

  1. ワードプレス初心者 #2 より:

    管理人さま、

    私も、上記「ワードプレス初心者」さまと同じく、ドンピシャリな状況でした。
    この記事のおかげで大変助かりました。心から御礼申し上げます。

  2. ワードプレス初心者 より:

    管理人さま

    当方、WEBなど全く素人ながら、会社のHP作成を任されて、ワードプレスで作成・運営を行っております。

    この記事にあります「検索スパム」が、私の運営しているサイトで、まさにビンゴな状態で、何をどうすればINDEX未登録にある、この変な文字列のリンクを解決できるのかを探しておりましたが、なかなか適切なサイトにたどり着けない中、本日、管理人さまのサイトを拝見しました。

    素人の私にでも、「サイト内検索を利用したスパム攻撃」が存在すること。また、その対処法まで、非常にわかりやすく、解説されていて、大変、勉強になり、早速、対策を施しました。

    大変、有益な情報を発信してくださり有難うございます!