WordPress内で、「s」パラメータを付けた大量のページを不正にGoogleにインデックスさせるスパム行為が行われています。
もしスパム攻撃を受けてしまった場合、自動生成された検索結果のページがGoogle検索にインデックスされ、海外の成人向けサイトの宣伝に利用されることが多いため注意しなければなりません。
このページでは、Wordpressのサイト内検索を悪用される前に対策する方法をご紹介します。
サイト内検索スパムの被害内容
サイト内検索のページが不正にGoogleにインデックスさせられる被害が続出しています。私が運営しているサイトでも同様の手口の被害にあいました。
最近WordPressに検索スパムがうざい…
— おーとかぶ (@autokabu) June 2, 2021
海外のデーティングサイトとかのURLを含む検索アクセスが殺到😡
遮断しようにも、スパムURLもアクセス元IPもたくさんあるし、GooglebotがこのURLにアクセスしてくるのよね🙄
なにかうまい方法ないかな🙄🙄 pic.twitter.com/uhQ2KVzeXP
検索スパムうぜぇ!! pic.twitter.com/ZvEVd7q2Yv
— ぼっちさん (@Apps_surf) February 1, 2019
このスパムに対応すべく私が考えた手立ては「サイト内検索結果が0件ならば404を表示する」といった対策です。
実際に機能を実装したページを見てみましょう。
試しにサイト内に存在しないキーワード「つぶやきシロー」で検索すると、「ページが見つかりませんでした」と表示されます。ステータスコードも存在しないページ「404 not found」になっていることが分かります。
サイト内検索結果が0件だった場合において、404ページの表示機能はそれほど難しくなくコードもシンプルで済みますし、SEOへの影響もなく安心してご利用いただけます。
また、導入しておけばスパムを未然に防ぐことができますので、この記事でご紹介するプラグインやサンプルコードを活用し、事前に対応しておくことをおすすめします。
サイト内検索スパム攻撃の対策
スパム攻撃対策用のサンプルコードやプラグインをご紹介します。動作検証をおこなったテスト環境は以下の通りです。
項目 | バージョン |
---|---|
WordPress | 5.0.0 |
PHP | 5.6.0 |
MySQL | 5.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');
対策用プラグイン
初心者でもスパム対策が手軽に実装できるようプラグインをご用意しています。実装が難しい方は、こちらをご利用ください。
Search Spam Protect Plugin Download
- メニューからプラグインを選択
- 新規追加
- プラグインのアップロード
- ファイルを選択(zipフォルダを選択)
- 今すぐインストール
- プラグインを有効化
プラグインを有効化した後、実際に存在しないキーワードを検索してみてください。404の画面が表示されていれば実装完了です。
まとめ
検索結果の機能を悪用したスパムは、まだまだ認知度が低いです。被害規模を調査した結果、大手週刊誌のメディアなども被害にあい、何も対策がとられないままとなっておりました。
スパムをしていないサイトでも、被害にあってしまえばGoogleにスパムサイトとして認定され、検索順位が落ちてしまう…といったことも考えられます。
スパム被害にあってしまっても、すぐ対応できるように、定期的にからサーチコンソールを確認するよう心掛けることが大切です。