[猿の浅知恵]HTTP/1.0を閉め出すPHPコード
投稿日:2015年10月20日
最終更新日:
概要と目次
- とりあえず、「HTTP/1.0なユーザーにはコメント投稿フォームを出さない。」(通常のブラウザはHTTP/1.1に対応しているので1.0は遮断してもOK。)
- コード基本編(その他のシーンに転用しやすく簡潔に書いたつもり)
- コード実装編(WordPressで使ってみる)
- もっと根本的にWordPressのコメントスパムを排除する(諸刃の剣)
コード基本編
ともかくHTTP/1.0なユーザーを判定しないことには話は始まりません。早速判定に使うコードを出します。 [PHP] [/PHP]$_SERVER[“SERVER_PROTOCOL”]の中身に、ページをリクエストした時のプロトコル名とバージョンが入ります。HTTP1.1を有効にしているブラウザからのアクセスだと「HTTP/1.1」になります。この中身がHTTP/1.0でないかどうかを判定するだけの、ごくごく簡単なコードです。ページ全体でHTTP1.0のアクセスを遮断する場合は.htaccessを使ったほうがいいと思いますが、これをやるとGoogleなど検索エンジンのBotまで根こそぎ閉め出すことになるので、PHPで判定してページの一部(今回の場合はコメントフォーム)を見せないようにします。
コード実装編
というわけで、実装編になります。 [PHP] [/PHP]だいぶ抽象的なコードになってしまったのは仕様です。これを使ってHTTP1.0ユーザーに対してコメント欄を出力しないようにすれば、多少なりともコメントスパムを抑制できるかもしれません。…実際には、スパムのBotはwp-comments-post.phpを直接叩いているのでしょう。あくまで気休めですね。
もっと根本的にWordPressのコメントスパムを排除する(諸刃の剣)
実際には、上記のコードを使ってもスパムは襲来します。ですが、もっと根本的な対策もあります。それは、「wp-comments-post.php」というファイルを削除することです。これを行ってしまえば、もうコメントスパムとはおさらばです!!…しかし、これは強烈な副作用があります。普通のユーザーのコメントの受付さえ停止してしまいます。まあ、wp-comments-post.phpはWordPressのコメント処理の肝に当たるので無理もありません。また、WordPressのシステムの根っこに触るので、事前のバックアップも忘れずに。