WordPressのxmlrpc対策

WordPressを使うにおいて、xmlrpc.php対策は必須となっています。主にhtaccessで対策するのが一般的だと思います。

一般的な対策

htaccessに以下のように追記することだと思います。

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

このようにすることだと思います。このやり方はプラグインを使わなくてもできる方法です。ただサーバーの負荷が若干あがるらしいです。

最近のやり方

最近は上記のようなやり方ではなく、以下のようにするみたいです。

<IfModule mod_rewrite.c>
RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
RewriteRule ^index\.php$ - [L] 
</IfModule>

このようにします。xmlrpc.phpにアクセスしたら、http://0.0.0.0というところにリダイレクトさせるみたいです。このほうがサーバーの負荷が低いみたいです。

その他の方法

function.phpで無効化

htaccessは、レンタルサーバーやApacheを使っている場合は使えますが、例えばnginxを使っているようなサーバーでは使う事ができません。htaccess自体nginxが対応していないためになります。nginxを使っている人はconfファイルをいじるか、プラグインやphpファイルで無効化することになります。

//xmlrpcの無効化
add_filter(‘xmlrpc_enabled’, ‘__return_false’);

//X-Pingbackのヘッダー情報を削除
function remove_x_pingback($headers) {
unset($headers[‘X-Pingback’]);
return $headers;
}
add_filter(‘wp_headers’, ‘remove_x_pingback’);

このようになります。

プラグインを使う

Disable XML-RPC Pingbackというプラグインをインストールして有効化することで対策できるみたいです。
※使った事がないのでこれに関しては正直わかりません。

Apacheを使っている方はhtaccessが行うのがいいかもしれません。nginxの人は面倒ですがconfファイルをいじって対策がいいかもしれません。