WordPressの運用中に大量のスパムコメントがついてしまったらどうやって削除する?今後の対策はどうするべき?

大量のスパムコメントがついてしまった・・・

開設だけして放置していたWordpressサイトを久しぶりに見てみたら、大量のスパムコメントがついてしまったという経験ありますよね?

私の場合、読めない言語で1000以上のスパムコメントがついてしまっていました。

コメントは承認制にしているのでページにコメントがついているわけではないのですが、管理画面で確認するとコメントが1567件とかになっています。

こういうのって、ボットを使って機械的にコメントを送ってきていて、その内容に興味を持ったサイトオーナー(この場合の私が)がリンクをクリックしてしまうことを狙っているわけです。

しかも、一回でもコメントが投稿できてしまうとスパム側は自動的にどんどん新しいコメントスパムを行ってきます。

とりあえず一括削除したい

管理画面で消すことはできるのですが、コメントの一括選択が20件までなので1000件以上になると結構たいへんです。

承認待ちのところにスパムコメントが入っているのでこの分だけを全部削除することにします。

サイト自体はConoHa VPS + kusanagiで運用しています。

VPSで運用しているので、phpAdminのようなツールは使わず、データベース(MariaDB)から直接一括削除します(当然ですが、データベースのバックアップは作成しておきましょう)。

WordPressサイトが使用しているデータベースの名前を確認しておきましょう。

kusanagiでサイトを作成した場合、/home/kusanagi/[任意のプロファイル名] がwordpressのプログラムが入っているディレクトリになります。

プロファイル名をmysiteとした場合は以下のようなディレクトリとなります。

/home/kusanagi/mysite

[root@123-123-23-23 mysite]# ls

DocumentRoot log settings tools wp-config.php

kusanagi のおすすめではセキュリティの観点からwp-config.phpはこのディレクトリ(mysite)内に入れることになっています。デフォルトではDocumentRootディレクトリに入ってますが、おすすめはその上の階層(このケースでは/home/kusanagi/mysite)です。

このwp-config.phpがwordpressの設定ファイルになります。ここにデータベースの設定などが書き込まれています。

wp-config.phpから、

[root@123-123-23-23 mysite]# more wp-config.php

などとして、wp-config.php中身を確認します。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'mysite');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'mysite_user');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'mypasswd');

mysiteのデータベースについての情報を確認しておきます。

それでは、実際にrootユーザーとしてMariaDBに接続します。

> mysql -u root -p

MariaDB []> use mysite; # use文でmysite データベースに接続します

MariaDB [mysite]> show tables; # テーブルを確認してみます。

+--------------------------------+
| Tables_in_mysite |
+--------------------------------+
| wp_cocoon_accesses |
| wp_cocoon_affiliate_tags |
| wp_cocoon_function_texts |
| wp_cocoon_item_rankings |
| wp_cocoon_speech_balloons |
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_site_cache |
| wp_sitemanager_device |
| wp_sitemanager_device_group |
| wp_sitemanager_device_relation |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |

mysiteというデータベースには以上のようなテーブルが存在しています。

このなかの wp_commentsというのがコメントを管理しているテーブルになります。

comment_approved='0'とは、0が承認待ちという意味です。

MariaDB [mysite]> delete from wp_comments where comment_approved='0';
Query OK, 1567 rows affected (0.02 sec)

1567件の「承認待ち」コメントを削除することができました。

wp-adminからもコメントを確認してみてください。

スパムコメント対策のいい方法

スパムコメント対策にはいろいろとあります。

簡単に方法を紹介していきます。

スパムコメントはボットによる機械的なものなので、GoogleのreCaptchaというサービスを使えば簡単に防げます。

reCaptchaはボットを判別するツールで、クリックの動作がロボットと判定されると次の操作に移れません。つまりボットはコメントできなくなるということです。

Advanced noCaptcha & invisible Captcha が ERRORを吐くようになったのでSimple Google reCAPTCHAに乗り換えた
Advanced noCaptcha & invisible Captcha がERROR:Pleasse solve Captcha correctlyを吐くようになったスパムコメントやスパムフィードバック対策として、ボットに...

コメント