[猿の浅知恵]HTTP/1.0を閉め出すPHPコード

私のブログにも毎日勤勉に襲ってくるコメントスパム。鬱陶しいので根こそぎ排除したいところです。このページでは、私が猿の浅知恵で考案したPHPコードを公開します。といっても、HTTP/1.0の接続を遮断するだけです。

概要と目次

  • とりあえず、「HTTP/1.0なユーザーにはコメント投稿フォームを出さない。」(通常のブラウザはHTTP/1.1に対応しているので1.0は遮断してもOK。)
  • コード基本編(その他のシーンに転用しやすく簡潔に書いたつもり)
  • コード実装編(WordPressで使ってみる)
  • もっと根本的にWordPressのコメントスパムを排除する(諸刃の剣)

コード基本編

ともかくHTTP/1.0なユーザーを判定しないことには話は始まりません。早速判定に使うコードを出します。

$_SERVER[“SERVER_PROTOCOL”]の中身に、ページをリクエストした時のプロトコル名とバージョンが入ります。HTTP1.1を有効にしているブラウザからのアクセスだと「HTTP/1.1」になります。この中身がHTTP/1.0でないかどうかを判定するだけの、ごくごく簡単なコードです。ページ全体でHTTP1.0のアクセスを遮断する場合は.htaccessを使ったほうがいいと思いますが、これをやるとGoogleなど検索エンジンのBotまで根こそぎ閉め出すことになるので、PHPで判定してページの一部(今回の場合はコメントフォーム)を見せないようにします。

コード実装編

というわけで、実装編になります。

だいぶ抽象的なコードになってしまったのは仕様です。これを使ってHTTP1.0ユーザーに対してコメント欄を出力しないようにすれば、多少なりともコメントスパムを抑制できるかもしれません。…実際には、スパムのBotはwp-comments-post.phpを直接叩いているのでしょう。あくまで気休めですね。

もっと根本的にWordPressのコメントスパムを排除する(諸刃の剣)

実際には、上記のコードを使ってもスパムは襲来します。ですが、もっと根本的な対策もあります。それは、「wp-comments-post.php」というファイルを削除することです。これを行ってしまえば、もうコメントスパムとはおさらばです!!…しかし、これは強烈な副作用があります。普通のユーザーのコメントの受付さえ停止してしまいます。まあ、wp-comments-post.phpはWordPressのコメント処理の肝に当たるので無理もありません。また、WordPressのシステムの根っこに触るので、事前のバックアップも忘れずに。

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

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

Bitcoin:

Monacoin:

Litecoin: