نحوه غیرفعال کردن XMLRPC وردپرس
XML-RPC که یک پروتکل فراخوانی از راه دور است برای مدتی طولانی به دلایل امنیتی و به طور پیشفرض غیرفعال شده بود اما اخیرا با انتشار نسخه های جدید آن، مجددا و به طور پیشفرض فعال شده است ضمن اینکه متاسفانه امکان غیرفعالسازی آن از داشبورد وردپرس حذف شده است!
این مقاله، نحوه غیرفعال کردن XMLRPC در هاست وردپرس و دلیل ارائه مجدد آن توسط وردپرس را بیان میکند.

XML-RPC چیست؟
XML-RPC یک پروتکل فراخوانی دستور از راه دور است که اطلاعات را از طریق XML با استفاده از پروتکل http منتقل میکند. به بیانی دیگر XML-RPC سیستمی است که امکان ایجاد پست در وبلاگ وردپرس با استفاده از نرمافزارهای وبلاگ نویسی مانند Windows Live Writer را علاوه بر استفاده از تلفن همراه و دستگاههای مشابه جهت دسترسی به وبلاگ و انتشار مطالب از راهدور را فراهم میکند.
درگذشته نگرانیهای امنیتی زیادی در ارتباط با XML-RPC وجود داشت که منجر به حذف این قابلیت به طور پیشفرض شد اما امروزه با توجه به استفاده روز افزون از تلفن های هوشمند، مجددا فعال گردیده است.
متاسفانه اخیرا گزارشهای ناامید کنندهای در خصوص سیستم مدیریت محتوا WordPress دریافت شده است که یکی از آن ها ایجاد حملات DDOS به سمت فایل xmlrpc.php میباشد.
روشهای غیرفعال کردن XMLRPC در وردپرس:
۱- حذف فایل xmlrpc.php
با حذف این فایل تمامی مراجعات با شکست مواجه میشود اما اجرای این روش توصیه نمیشود!
به مسیر بارگذاری قالب وبسایت مراجعه نموده و کد زیر را به انتهای فایل functions.php اضافه کنید.
(فایل مذکور معمولا در مسیر زیر wp-content/themes/yourtheme/functions.php از هاست شما بارگذاری شده است.)
function remove_x_pingback($headers) {
unset($headers['X-Pingback']);
return $headers;
}
add_filter('wp_headers', 'remove_x_pingback');
add_filter('xmlrpc_enabled', '__return_false');
با استفاده از این افزونهها نیز میتوانید بدون نیاز به واردکردن کدهای بالا XML-RPC را غیرفعال کنید.
فایل htaccess. موجود در public_html یا مسیر اصلی هاست را باز نموده و کد زیر را در ابتدای آن قرار دهید.
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
با این روش که یکی از بهترین موارد است دسترسی به فایل xmlrpc.php که مورد حمله قرار گرفته قطع خواهد شد.
ممکن است شما از یک سرور مجازی یا سرور اختصاصی که حاوی تعداد زیادی اکانت وردپرسی باشد، استفاده میفرمایید در این صورت انجام روش قبل بسیار زمانبر و طولانی خواهد بود. در این شرایط میتوانید با استفاده از دسترسی root و SSH کد زیر را در ابتدای فایل کانفیگ Apache قرار دهید.
(در سرورهای cPanel این فایل در مسیر usr/local/apache/conf/httpd.conf/ میباشد.)
<FilesMatch "^(xmlrpc\.php|wp-trackback\.php)"> Order Deny,Allow Deny from all </FilesMatch>
چنانچه از وب سرور nginx در سرور شما استفاده میشود، میتوانید با استفاده از دسترسی root و SSH کد زیر را در فایل کانفیگ nginx قرار دهید.
server {
location = /xmlrpc.php {
deny all;
}
}
با استفاده از این روش نیز تمامی حملات همانند روش قبل خنثی میشوند.
البته هبچگاه از بروزرسانی سیستم مدیریت محتوای خود غافل نشوید!