WordPressのスパム対策 まとめのメモ

この記事は、過去に私が試行錯誤した結果辿り着いたWordPressにおけるスパム対策のまとめです。現在進行形で襲い来るスパムに悩まされている人の参考にはなるかもしれません。

スパム対策 もくじ

  • 防御しなければならない場所
  • .htaccessが使える場合の対処法(推奨)
  • .htaccessが使えない場合の対処法(やや苦し紛れ)

防御しなければならない場所

スパマーたちは、(おそらく)Botを使って自動でスパムコメントを投げています。その時襲撃されるファイルが、wp-comments-post.php(WordPressが配置されているディレクトリに存在する)というファイルです。私の勝手な推測ですが、スパマーたちはここをガスガス叩いてきます。このファイルへのアクセスを遮断してやらないと、うんざりするスパムは永遠にやってくる事でしょう。並みいるスパマーたちはゴキブリ並みの執念とGoogle大先生並みの標的発見力を持っています。

.htaccessが使える場合の対処法(推奨)

ここから防御方法の解説に入ります。まずはあなたがお使いのサーバーで「.htaccess」を編集できるかどうかを確認してください。編集できる場合はこのセクションを、できない場合は「.htaccessが使えない場合の対処法(やや苦し紛れ)」のセクションをお読みください。

.htaccessは、ディレクトリ単位でアクセス制御やエラーメッセージのカスタマイズなどを可能にするファイルです。ファイル名は文字通り.htaccessになります。ちなみにファイル名先頭のドットは、Unix系OS(サーバーでよく使われる)における隠しファイルの意味です。

こんな感じで.htaccessが配置された場合、.htaccessが置かれているディレクトリhogeとそのサブディレクトリpiyoにも.htaccessの設定内容が適用されます。.htaccessはディレクトリごとに設置可能なので、この場合はサブディレクトリpiyoに.htaccessを配置すれば、そこではまた別の設定を利用できます。下層ディレクトリと上層ディレクトリの設定が矛盾している場合は、下層ディレクトリ側の設定が優先されます。

前置きはこの辺にして、早速設定に入ります。日本国内からのコメントのみを想定する場合は、.htaccessを以下のように記述すればOKです(WordPress側で行われている記述を破壊するのは絶対にNG。)

アクセス元が日本国内かどうかを判定し(なおかつHTTP/1.0を使用していないかどうかも判定)、一般ピープルと判断されたユーザー(日本国内からのアクセス・HTTP/1.1使用)はwp-comments-post.phpへのアクセスを許可し、そうでない人(というかスパムBot)はアクセス拒否します。一旦全部拒否して一般人判定を通過したユーザーだけ通す感じです。私はこの設定で運用しています。この方式での運用を開始(2015年10月頃と思われる)して以来、私はスパムコメントを(2015年11月現在)1件も見ずに住んでいます。効果は絶大です。ただし海外の一般ピープルもスパム扱いして閉め出すという強烈な副作用が存在するので、やや使用する環境を選びます。

海外ユーザーも想定するならこんな感じになります。

一旦全部許可してからやばそうなアクセスを判定して拒否します。やや通過チェックがザルになるのは否めないので、当然効果は落ちるでしょう。もし防御を突破するスパマーが来たら、deny from スパマーのIPアドレス を順次追記してください。

こんな感じの.htaccessを完成させたら、wp-comments-post.phpがあるところと同じディレクトリにアップロードしてください(もともとWordPress側で設定した.htaccessがあるはずなので、一旦それをダウンロードして、今回解説した内容を追記して編集することになります)。

.htaccessが使えない場合の対処法(やや苦し紛れ)

.htaccessを利用できない場合は、PHP処理でスパマーを弾くことになります。具体的にはwp-comments-post.phpをちょっと細工することになります。コードはこんな感じです。

こんな感じのコードが有るはずなので(ファイルの頭の方)、このように加工します。 防御性能としては海外アクセス想定型.htaccessに準じます。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

Bitcoin:

Monacoin:

Litecoin: