wordpressを使っているとコメントのスパムが日々大量に書き込まれます。
Akismetを使えばいい感じに防げるのですが、営利利用は有料になるようです。adSenseなどの広告をブログに載せていると営利利用に抵触する気がしたので別の方法を探しました。
WEBサーバでブロックを試みる
不正なRefererから来ていたらブロックするとかできるかなと思ったのですが、ちゃんとコメントを投稿するブログページがRefererに設定されていたので断念。
こんな感じのリクエストです。
xxx.xxx.xxx.xxx - - [27/Feb/2016:20:51:53 +0900] "POST /wordpress/wp-comments-post.php HTTP/1.0" 302 0 "https://mussyu1204.com/wordpress/?p=265#comment-102" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36 OPR/28.0.1750.48"
ログインユーザのみコメントを許可する
これを有効にしたらコメントスパムはほぼこなくなりました。
ただ、不特定多数の人がコメントを書くことを想定していたらNGです。
トラックバック通知を拒否する
コメントをログインユーザのみに許可するようにしたのですが、しばらくしたらまたコメントスパムの書き込みがありました。リクエストは以下のような感じです。
xxx.xxx.xxx.xxx - - [19/Mar/2016:00:08:00 +0900] "GET /wordpress/wp-includes/js/comment-reply.min.js?ver=4.4.2 HTTP/1.1" 200 1078 "https://mussyu1204.com/wordpress/?p=197" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1"
調べてみるとトラックバック通知を受けると、wordpressではそれがコメント一覧に表示されるようです。
なのでコメントスパムではなくトラックバックスパムでした。
これで今のところスパムによる書き込みはなくなりました。