Лучший способ устранить xmlrpc.php?

Каков наилучший способ удалить файл xmlrpc.php из WordPress, когда он вам не нужен?

Поскольку WordPress 3.5 этот параметр ( XML-RPC ) включен по умолчанию, и возможность отключить его из dashboard WordPress исчезла.

Добавьте этот фрагмент кода для использования в 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 см. В Codex .

  • Перед редактированием / добавлением всегда делайте резервную копию файла (ов).

Редактировать / Update

@Prosti, -Вы абсолютно правы, о вариантах, которые RESTful API предложит для WordPress!

Я забыл упомянуть об этом. Он уже должен был быть интегрирован в ядро ​​( WordPress версии 4.1 ), которое в то время было невозможно. Но, как кажется, будет основным в WordPress 4.5.

Альтернативой на данный момент является этот плагин: WordPress REST API (версия 2)
Вы можете использовать его, пока Restful API также не станет ядром для WordPress.
Целевая дата выпуска WordPress 4.5. (12 апреля 2016 года (+ 3w))

Для тех, кто интересуется RESTful , на Stackoverflow очень хорошая вики сообщества.

Мы используем файл htaccess для защиты от хакеров.

 # BEGIN protect xmlrpc.php <files xmlrpc.php> order allow,deny deny from all </files> # END protect xmlrpc.php 

Лучше всего отключить функции xmlrpc.php с помощью плагина, а не удалять или отключать сам файл. Сам файл будет заменен на основные обновления WordPress, в то время как плагин будет отключен после основных обновлений и если вы измените темы.

См. https://wordpress.org/plugins/search.php?q=disable+xml-rpc для разных плагинов. Все они имеют незначительные отличия.

Эти плагины выполняют ту же функцию, что и функция, добавленная в файл functions.php темы или добавление order,allow deny правило order,allow deny .htaccess (как указано в других ответах), причем разница в том, что плагин или функция отключает вызовы xmlrpc.php через PHP, а правило в .htaccess работает, используя mod_rewrite в веб-сервере (то есть Apache или Nginx). Не существует заметной разницы в производительности между использованием PHP и mod_rewrite на современном сервере.

Для крайнего меньшинства, в котором размещается WordPress в IIS, вы можете использовать модуль перезаписи URL-адреса IIS для выполнения аналогичных ограничений, связанных с htaccess. В приведенном ниже примере предполагается, что истинный клиентский IP-адрес входит в заголовок X-Forwarded-For, известный белый белый список – 55.55.555.555 и что вы хотите отвечать 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 .

и другие способы устранения xmlrpc

Недавно я установил Wordfence, который с версии 6.3.12 имеет возможность блокировать прямой доступ к любому местоположению. Помещение /xmlrpc.php на страницу «Параметры» в списке запрещенных IP-адресов «Немедленно блокировать IP-адреса, которые обращаются к этим URL-адресам» , теперь показывает, что одна попытка блокируется каждые 15 минут.

Это также имеет то преимущество, что вы можете заблокировать URL-адрес, чтобы убежать от этих досадных ботов, которые возвращаются с другим IP-адресом снова и снова.

Я не знаю, разрешает ли это использование xmlrpc.php приложениями для действительных операций.

У меня были некоторые проблемы с этим, производя 504 Timeout и 502 Bad Gateway ошибки на сервере вначале, но он, похоже, успокоился.

Очень впечатлен результатом до сих пор, и он создал ценный профиль очистки после того, как сайт был взломан, прежде чем устанавливать Wordfence и, несмотря на то, что у него всегда была последняя версия WordPress и плагинов.

Wordfence https://www.wordfence.com/