記事の詳細

bbpressを使用して設置した掲示板に大量スパム

お盆の連休明けにメールチェックをしたらありえない下図の大量メールが届いており、おかしい!ということで、調査をしてみたところ、bbPressで設置したフォーラムに1万件以上のスパム投稿がなされておりました。

大量スパム

これはヤバいでしょ。ということで、スパム対策と大量に届いてしまったスパム投稿の削除について書いてみます。

スパム対策にはプラグイン「bbPress Antispam」が便利です。

インストールして、有効化するだけで、ぴたりとスパム投稿が無くなりました。
こちらは、普通にプラグインを追加して有効かするだけですので、詳細は別の機会に譲ります。

さて、問題は1万件以上のスパム投稿の削除です。1件ずつ削除するのは嫌だー。。。ということで、データベースを直接いじることにしました。

スパム投稿の削除① データベースのバックアップ

phpMyAdminなどで、データベースをバックアップしておきましょう。

スパム投稿の削除② wp_postmetaのスパム関連レコードを削除

スパム投稿は、phpMyAdminでデータベースを直接更新して削除しました。

テーブルのレコード数を見ると、「wp_postmeta」と「wp_posts」のレコード数が明らかに多いので、ここにスパムレコードが紛れていることになります。

テーブル一覧

wp_postmetaテーブルの情報だけでは、どのレコードがスパムなのかは判断できません。

wp_postmetaテーブルの内容

wp_postmetaとwp_postsを連結し、post_contentの値がすべて英文ならスパムと判定して、スパム行だけを表示するSQLを実行してみました。
また、7月1日以降にスパムが来ているため、日付を7月1日以降とし、フォーラム関係に絞りたかったので、guid列に”forum”という文字列を含むレコードのみ抽出しております。

実行したSQL文

実行後の結果

ここに表示されたレコードはすべてスパムとみなして、全部削除していきます。

SQL実行後の結果画面

削除するSQL文は以下を参照ください。

実行したSQL文

先ほどのSQL文の1行目「SELECT *」を「DELETE postmeta」に変えただけです。

このSQL文を実行することで、wp_postmetaテーブルからスパム関連レコードが削除されました。

スパム投稿の削除③ wp_postsのスパム関連レコードを削除

wp_postsテーブルのスパム関連レコードも削除していきます。
次のSQL文を実行します。

情報の整理 wp_postmetaテーブルの調整

上記SQLを実行すると、ほとんどのスパム行は消え去ります。
10件だけ残ってしまいましたが・・・(全角文字が本文内に含まれているスパム投稿です)
これら数も少ないので、後ほど手動で削除すればいいですね。

ところで、気になることが。
下図の様に、投稿数が依然として13,643件となっております。

気になる現象

ということで、ここも手動で修正してしまいましょう。

次のSQL文を実行します。WHERE句の条件が13643ではなく13642である理由は、投稿数は最初のトピック投稿1件を含んだ数ですので、返信数は13642であるためです。

クエリの結果は次の画面です。

クエリの結果

各行の鉛筆のアイコンをクリックして、手動で正しい数に直してしまいます。今回は返信数は12件でしたので、13642を12に変更しました。

これで大量スパムを一気に削除することができました。
参考にされる方は自己責任でお願いいたします。また、必ずデータベースのバックアップも取得しておいてください。

この記事であなたの課題を解決することができましたか?

疑問点があったり、解決できなかったことがありましたら、お気軽にご相談してください。


ほかの投稿も読んでみませんか?

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

相模原のお店やサービスをどんどん紹介!

行ってみよう相模原 相模原市のお店限定

飲食店

ページ上部へ戻る