WordPress サイト内検索 スパム対策のサンプルコード&プラグイン

WordPress内で、「s」パラメータを付けた大量のページを不正にGoogleにインデックスさせるスパム行為が行われています。

もしスパム攻撃を受けてしまった場合、自動生成された検索結果のページがGoogle検索にインデックスされ、海外の成人向けサイトの宣伝に利用されることが多いため注意しなければなりません。

このページでは、Wordpressのサイト内検索を悪用される前に対策する方法をご紹介します。

サイト内検索スパムの被害内容

サイト内検索のページが不正にGoogleにインデックスさせられる被害が続出しています。私が運営しているサイトでも同様の手口の被害にあいました。

このスパムに対応すべく私が考えた手立ては「サイト内検索結果が0件ならば404を表示する」といった対策です。

実際に機能を実装したページを見てみましょう。

スパム対策イメージ

試しにサイト内に存在しないキーワード「つぶやきシロー」で検索すると、「ページが見つかりませんでした」と表示されます。ステータスコードも存在しないページ「404 not found」になっていることが分かります。

404 not found

サイト内検索結果が0件だった場合において、404ページの表示機能はそれほど難しくなくコードもシンプルで済みますし、SEOへの影響もなく安心してご利用いただけます。

また、導入しておけばスパムを未然に防ぐことができますので、この記事でご紹介するプラグインやサンプルコードを活用し、事前に対応しておくことをおすすめします。

サイト内検索スパム攻撃の対策

スパム攻撃対策用のサンプルコードやプラグインをご紹介します。動作検証をおこなったテスト環境は以下の通りです。

項目バージョン
WordPress5.0.0
PHP5.6.0
MySQL5.6.0

対策用サンプルコード

functions.phpに以下のサンプルコードを挿入しご使用ください。

処理内容としては、「検索結果が0件の場合、404 not found(404エラー)を表示する」というシンプルなサンプルコードとなっています。

/**
 * search-spam-protect
 * @access   
 * @param    
 * @return   
 * @author   
 * @see      
 */

function search_spam_protect() {

	global $wp_query;
	
	if ($wp_query->is_search) {
		if ($wp_query->found_posts === 0) {
			$wp_query->set_404();
			status_header(404);
		}
	}
	
}
add_action('template_redirect', 'search_spam_protect');

対策用プラグイン

初心者でもスパム対策が手軽に実装できるようプラグインをご用意しています。実装が難しい方は、こちらをご利用ください。

  1. メニューからプラグインを選択
  2. 新規追加
  3. プラグインのアップロード
  4. ファイルを選択(zipフォルダを選択)
  5. 今すぐインストール
  6. プラグインを有効化

プラグインを有効化した後、実際に存在しないキーワードを検索してみてください。404の画面が表示されていれば実装完了です。

まとめ

検索結果の機能を悪用したスパムは、まだまだ認知度が低いです。被害規模を調査した結果、大手週刊誌のメディアなども被害にあい、何も対策がとられないままとなっておりました。

スパムをしていないサイトでも、被害にあってしまえばGoogleにスパムサイトとして認定され、検索順位が落ちてしまう…といったことも考えられます。

スパム被害にあってしまっても、すぐ対応できるように、定期的にからサーチコンソールを確認するよう心掛けることが大切です。

投稿者プロフィール

Yuji Itou
Yuji Itou
WordPress歴10年以上のwebエンジニア。おもな使用言語はHTML/JavaScript/PHP。実績として、ブログ型ホームページ、データベース型サイトや企業コーポレートサイトなど小~中規模のあらゆるサイト開発を経験し、サイトデザインの組み込み(フロントエンド)からサーバー構築、データベース設計(バックエンド)まで一貫して携わっている。また、Google検索アルゴリズムにも詳しく、SEO対策を考慮したサイトコーディングや、SEOツールの作成も得意。ときたまコンテンツSEOのライティングもおこなっている。

コメントを残す

メールアドレスは公開されることはありません。コメントの公開は承認制となります。また、多忙によりコメントには返信できない場合がありますが、不具合・バグ報告はTwitterのメッセージでも承っております。こちらまで。