WordPressのコメント書き込みを国内IPだけに制限する方法 【wp-comments-post.php】

  • 投稿 : 2014-03-02
  • 更新 : 2014-07-13
追記:2014/03/05
1日100件ぐらいスパムコメントがあったのですが、0件になりました。
予想してたと言え、すごい効果だ・・・

Akismetの出番なしって感じです。

プラグインを導入してコメントスパム対策はしているのですが、結局はスパムによってWordpressに負荷がかかるという部分がありそうに思うので、IPアドレスで制限をかけて、海外IPはすべてはじくようにすれば事前にけるので負荷のかかり方がマシでは?と思いそうしてみることにしました。

Wordpressでコメントを書き込む部分は、wp-comments-post.phpが担当しているようで、これに制限を書ければOKのようです。

wp-comments-post.phpへのアクセス制限

.htaccessに以下を追加します。
<Files wp-comments-post.php>
Order deny,allow
Deny from all
Allow from 111.222.33.44
Allow from 111.222.33.55
Allow from 111.222.33.81
</Files>

wp-comments-post.phpをIP制限します。上記の例だと3つのIPだけ許可してることになります。
これを国内IPすべてを書けばOKだということになります。

WordPressの管理画面へのアクセスを国内だけに制限する 【wp-admin】

上記の記事は、wp-login.php(管理画面のログイン)に対する制限ですがそれと同じようにすればOKです。

国内IP一覧は、以下で判明します。
APNIC(Asia Pacific Network Information Centre)が割り当ててるIPアドレスのリスト
http://ftp.apnic.net/stats/apnic/delegated-apnic-latest

自分で作成するのは面倒なので、以下のサイトを利用することにしました。
IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI's

【注意】
許可したIP以外からは、書き込みできません。IP判断なので、本当は国内なのに書き込めないという自体が発生する可能性があります。

wp-comments-post.phpとwp-login.phpを国内IPだけに制限したい

<Files ~ "^(wp-login\.php|wp-comments-post\.php)$">
Order deny,allow
Deny from all
Allow from 111.222.33.44
Allow from 111.222.33.55
Allow from 111.222.33.81
</Files>

1行をこう書けば、wp-comments-post.phpとwp-login.phpが処理対象になる

.htaccess/特定のファイルだけ許可したい | HTMLのQ&A【OKWave】

オマケ:リファラー(referer)による制限

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

上記のようなものを.htaccessに追加。
yourdomain.com -> k05.biz のように、自身のドメインに書き換えてください。

.htaccessをWordPressで徹底活用 | CSSPRO
Unleashing .htaccess for WordPress

ただ、コメントスパムは、リファラー(referer)を付加していることが多いので、現状ではこれで排除できるのはごくわずかのような気がします。

スポンサーリンク