回答:
WordPress 3.5以降、このオプション(XML-RPC
)はデフォルトで有効になっており、WordPressからオフにする機能dashboard
はなくなりました。
で使用するこのコードスニペットを追加しますfunctions.php
。
// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
// Disable X-Pingback to header
add_filter( 'wp_headers', 'disable_x_pingback' );
function disable_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
それは言うことをしますが、それがヒットすることによってサイトが攻撃を受けているとき、それは集中することができます。ファイル
で次のコードスニペットを使用した方がよい場合があり.htaccess
ます。
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
または、これを使用してxmlrpc.php
、NGINXサーバーブロックからのファイルへのアクセスを無効にします。
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
無効にすると、モバイル経由のログインにも影響する可能性があることに注意してください。私が正しい場合、WordPressモバイルアプリにはこれが必要です。の使用の詳細については、コーデックスを
参照してください。XML-RPC
- 編集/追加の前に、常にファイルのバックアップを作成してください。
@ Prosti、-あなたは絶対に正しい-WordPressにRESTful API
提供されるオプションについて!
これについて言及するのを忘れました。コア(WordPressバージョン4.1)に既に統合されているはずでしたが、その時点では不可能でした。しかし、どうやら、WordPress 4.5の中核となるでしょう。
今のところ、このプラグインはWordPress REST API(バージョン2)
ですRestful API
。WordPressのコアになるまで使用できます。
WordPress 4.5のリリースの目標日。(2016年4月12日(+ 3w))
に興味がある人にとって
RESTful
、Stackoverflowにはとても素晴らしいコミュニティwikiがあります。
X-Pingback
単一の投稿/ページのヘッダーを取得している人向け。完全に削除するには、別のフィルターを使用する必要がありますadd_filter('pings_open', '__return_false', PHP_INT_MAX);
。
functions.php
テーマを変更するときにすべての効果が失われます。function.php
設計目的のみのため、プラグインを使用してください!
=
nginx confコードの最初の行に等号()がないように見えます。これは私のために働いた: location = /xmlrpc.php {
ハッカーから保護するために、htaccessファイルを使用しています。
# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php
Webサーバーの構成を介してブロックする機能がある場合、@ Charlesの提案は適切です。
phpを使用してのみ無効にできる場合、xmlrpc_enabled
フィルターは正しい方法ではありません。https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/
に記載され
ているように、認証を必要とするxml rpcメソッドのみを無効にします。
代わりに、xmlrpc_methods
フィルターを使用してすべてのメソッドを無効にします。
<?php
// Disable all xml-rpc endpoints
add_filter('xmlrpc_methods', function () {
return [];
}, PHP_INT_MAX);
次のコンテンツを含むxmlrpc.phpにPOSTリクエストを送信することで、機能するかどうかをテストできます。
<methodCall>
<methodName>system.listMethods</methodName>
</methodCall>
フィルターが機能している場合、残っているメソッドは3つだけです。
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<string>system.multicall</string>
</value>
<value>
<string>system.listMethods</string>
</value>
<value>
<string>system.getCapabilities</string>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
curlで簡単にテストできます:
curl -X POST \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/xml' \
-d '<methodCall><methodName>system.listMethods</methodName></methodCall>' \
https://your-wordpress-site.com/xmlrpc.php
xmlrpc.php
ファイル自体を削除または無効にするのではなく、プラグインで機能を無効にすることをお勧めします。ファイル自体はWordPressのコアアップデートで置き換えられますが、プラグインはコアのアップデート後やテーマを変更した場合は無効のままになります。
さまざまなプラグインについては、https://wordpress.org/plugins/search.php?q = disable + xml-rpcを参照してください。それらはすべてわずかな違いがあります。
これらのプラグインは、テーマのfunctions.php
ファイルに追加された関数またはorder,allow deny
.htaccessにルールを追加する(他の回答で概説されている)関数と同じことを行います。違いは、プラグインまたは関数がxmlrpc.php
PHP経由の呼び出しを無効にし、 Webサーバー(ApacheまたはNginx)でmod_rewriteを活用する。最新のサーバーでPHPとmod_rewriteを使用しても、パフォーマンスに大きな違いはありません。
IISでWordPressをホストしている極端な少数派については、IIS URL書き換えモジュールを使用して、同様のhtaccessのような制限を行うことができます。以下の例では、真のクライアントIPがX-Forwarded-Forヘッダーで受信され、既知のホワイトリストIPが55.55.555.555であり、非ホワイトリストIPにHTTP 404で応答することを想定しています。
<rule name="wordpress-restrictions" enabled="true" stopProcessing="true">
<match url="(^xmlrpc.php)|(^wp-admin)|(^wp-login.php)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_FORWARDED_FOR}" pattern="(^55\.55\.555\.555$)" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="404" subStatusCode="44" statusReason="File or directory not found" statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
最初の方法では、コードadd_filter('xmlrpc_enabled', '__return_false');
をファイルfunctions.php
またはサイト固有のプラグインに配置できます。ファイルを編集するよりも、明らかにサイト固有のものにすることをお勧めしますfunctions.php
。
私は最近Wordfenceをインストールしました。バージョン6.3.12の時点で、任意の場所への直接アクセスをブロックすることができます。禁止されたアクセスIPのリストの[オプション]ページに/xmlrpc.phpを置くと、「これらのURLにアクセスするIPを即座にブロックする」は、約15分ごとにブロックされる1回の試みを示します。
これには、URLをブロックして、何度も異なるIPアドレスで戻ってくる厄介なボットから逃れることができるという利点もあります。
有効な操作のためにAppsがxmlrpc.phpを使用できるかどうかはわかりません。
最初にサーバー上で504タイムアウトと502 Bad Gatewayエラーを生成する問題がありましたが、落ち着いたようです。
これまでの結果に非常に感心し、Wordfenceをインストールする前にサイトがハッキングされた後、常に最新バージョンのWordPressとプラグインを持っているにもかかわらず、貴重なクリーンアッププロファイルを作成しました。
/xmlrpc.php
アクセスするIPを禁止するセキュリティルールを追加すると、正当なトラフィックがブロックされる可能性があるようです。pingbacksが有効なサイトへのリンクがサイトにある場合、そのサイトはそのURLにリクエストを送信し、すぐにブロックされます...問題を引き起こす可能性があるようです。