غیرفعال کردن XML-RPC وردپرس؛ راهنمای کامل، سریع و گامبهگام
پروتوکل XML-RPC یکی از قابلیتهای قدیمی وردپرس است که زمانی برای ارتباط از راه دور، ارسال پست با موبایل و اتصال نرمافزارهای جانبی ایجاد شد. اما امروز، این فایل تبدیل به یکی از بزرگترین حفرههای امنیتی وردپرس شده است. هکرها با سوءاستفاده از XML-RPC حملات بروت فورس (Brute Force) و DDoS را روی سایتها اجرا میکنند. در حوزه امنیت سایت، بستن روزنههای نفوذ قدیمی مثل این فایل از نان شب واجبتر است!
بررسی سریع غیرفعالسازی XML-RPC در یک نگاه
اجرای صدها تست رمز عبور در ۱ درخواست + حملات منع خدمت (DDoS)
قراردادن کد تکخطی در فایل htaccess. یا نصب افزونه Disable XML-RPC
REST API وردپرس که ایمنتر، سریعتر و استانداردتر است
فهرست مطالب مقاله

- ۱. فایل XML-RPC چیست و در وردپرس چه نقشی دارد؟
- ۲. چرا باید XML-RPC را فوراً غیرفعال کنیم؟ (خطرات امنیتی)
- ۳. روشهای غیرفعال کردن XML-RPC وردپرس
- • غیرفعالسازی با فایل htaccess. (پیشنهاد اصلی)
- • غیرفعالسازی در سرور Nginx
- • غیرفعالسازی با افزونه وردپرس
- • قطع دسترسی از طریق functions.php
- ۴. جدول مقایسه روشهای بستن XML-RPC
- ۵. چطور وضعیت غیرفعال بودن XML-RPC را تست کنیم؟
- ۶. عیبیابی سریع (Troubleshooting)
- ۷. سوالات متداول کاربران
فایل XML-RPC چیست و در وردپرس چه نقشی دارد؟

در سالهای اولیه پیدایش وردپرس، مدیریت وبسایت فقط از طریق مرورگر انجام میشد. برای اینکه اپلیکیشنهای موبایل یا نرمافزارهای دسکتاپ (مثل Windows Live Writer) بتوانند بدون باز کردن پیشخوان وردپرس مطلب بفرستند، پروتکلی به نام XML-RPC روی هسته وردپرس قرار گرفت. این پروتکل جهت ایجاد ارتباطاتت بین سروری و ریموت طراحی شده بود.
با گذر زمان و معرفی نسخه ۴.۷ وردپرس، پدیدهای به نام REST API معرفی شد. REST API بسیار مدرنتر، امنتر و انعطافپذیرتر است و کاملاً جایگزین XML-RPC شده. اما متأسفانه برای حفظ سازگاری با نسخههای قدیمی، وردپرس همچنان فایل xmlrpc.php را در پوشه اصلی سایت فعال نگه میدارد. اگر در حال توسعه پروژه یا مدیریت وبسایت هستید، میتوانید جدیدترین نکات مدیریت وب را در صفحه اصلی مهیار هاب دنبال کنید.
چرا باید XML-RPC را فوراً غیرفعال کنیم؟ (خطرات امنیتی)

اگر از قابلیتهای قدیمی مانند پینگبک (Pingback) یا اپلیکیشن بسیار قدیمی وردپرس استفاده نمیکنید، باز ماندن این فایل ریسک امنیتی بسیار بالایی برای سایت شما ایجاد میکند. اگر قصد اجرای اقدامات متعددی برای ایمن سازی وردپرس دارید، این فایل از اولین موارد است. مهمترین آسیبپذیریهای مرتبط عبارتند از:
- حملات Brute Force پیشرفته: به طور معمول، اگر هکر بخواهد فرم ورود (wp-login.php) را تست کند، برای هر نام کاربری و رمز عبور یک درخواست میفرستد. اما با قابلیت
system.multicallدر XML-RPC، هکر میتواند با یک درخواست تنها، بیش از ۵۰۰ رمز عبور مختلف را همزمان تست کند! این کار سیستمهای محدودکننده مثل Captcha را دور میزند. - حملات DDoS با Pingback: ویژگی Pingback به سایتها اجازه میدهد به یکدیگر بازخورد دهند. هکرها میتوانند هزاران درخواست پینگبک جعلي از طریق XML-RPC به سایت شما بفرستند. این کار باعث مصرف شدید منابع CPU و RAM شده و در نهایت سرور شما از دسترس خارج میشود.
- افت سرعت و کندی سرور: رباتهای اسکنر مدام در حال ارسال درخواست به فایل xmlrpc.php هستند. این درخواستهای تکراری باعث اشغال ترافیک سرور و کند شدن پاسخدهی به کاربران واقعی میشود. کاهش بار سرور تأثیر مستقیمی بر بهبود سئو و بهینهسازی سایت دارد.
اگر سایت شما دچار کندی شدید ناگهانی شده یا فایروال سرور هشدارهای متعدد ارسال میکند، ممکن است تحت حمله از طریق این فایل قرار گرفته باشید. اگر سایت شما دچار نفوذ شده، قبل از هر کاری باید فرایند پاکسازی سایت هک شده را شروع کنید.
روشهای غیرفعال کردن XML-RPC وردپرس
چند راهکار عالی برای بستن دسترسی XML-RPC وجود دارد. بسته به سطح دسترسی شما به هاست یا میزان آشنایی با کدنویسی، میتوانید یکی از روشهای زیر را انتخاب کنید.
روش اول: غیرفعالسازی با فایل htaccess. (بهترین و سریعترین روش)
اگر سرور شما از Apache یا LiteSpeed استفاده میکند، قطع دسترسی در سطح web server کارآمدترین راه است. زیرا درخواستها قبل از اینکه به وردپرس برسند و پردازش شوند، همان ابتدا بلاک میشوند.
- وارد پنل مدیریت هاست (cPanel یا DirectAdmin) شوید.
- به قسمت File Manager رفته و وارد پوشه
public_htmlشوید. - فایل
.htaccessرا پیدا کرده و روی Edit کلیک کنید (اگر فایل را نمیبینید، گزینه Show Hidden Files را در تنظیمات هاست فعال کنید). - کد زیر را کاملاً کپی کرده و در انتهای فایل
.htaccessقرار دهید:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
فایل را ذخیره کنید. از این لحظه هر درخواستی که به طرف فایل XML-RPC ارسال شود با خطای 403 Forbidden مواجه خواهد شد.
روش دوم: غیرفعالسازی در سرور Nginx
اگر سرور اختصاصی یا VPS با وبسرور انجینایکس (Nginx) دارید، باید فایل کانفیگ سایت خود (معمولاً در مسیر /etc/nginx/sites-available/) را ویرایش کرده و قطعه کد زیر را داخل بلوک server بگذارید:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
پس از ذخیره فایل، وبسرور را با دستور sudo systemctl reload nginx ریلود کنید. در پروژههای بزرگ یا مراحل طراحی سایت، تنظیم اولیه این کانفیگها در سرور اهمیت بالایی دارد.
روش سوم: استفاده از افزونه وردپرس
برای استقاده از افزونه نیازی به دسترسی هاست یا کدنویسی ندارید. این روش برای کاربران مبتدی بسیار عالی است.
- وارد پیشخوان وردپرس شوید و به بخش افزونهها > افزودن بروید.
- عبارت Disable XML-RPC API را جستجو کنید.
- افزونه را نصب و فعالسازی کنید.
به محض فعالسازی افزونه، تمامی کدهای مربوط به این سرویس خاموش میشوند. همچنین افزونههای جامع امنیتی مانند iThemes Security یا Wordfence هم این گزینه را در تنظیمات خود دارند. علاوه بر این، تنظیم یک وب اپلیکیشن فایروال وردپرس به شما کمک میکند جلوی این حملات را قبل از رسیدن به دیتابیس بگیرید.
روش چهارم: بستن دسترسی از طریق functions.php
اگر نمیخواهید افزونه اضافی نصب کنید و دسترسی به فایل htaccess هم ندارید، میتوانید فیلتر زیر را به فایل functions.php پوسته فعال خود اضافه کنید:
add_filter('xmlrpc_enabled', '__return_false');
نکته: این روش متدها را مسدود میکند اما درخواستهای HTTP همچنان به فایل میرسند. بنابراین روش htaccess ارجحیت دارد. رعایت نکات استاندارد و پیروی از اصول کدنویسی امن وردپرس مانع بروز این باگها در افزونهها و قالبهای شخصیسازی شده میشود.
جدول مقایسه روشهای غیرفعال کردن XML-RPC
در جدول زیر، روشهای مختلف را بر اساس سطح امنیت و سادگی اجرا مقایسه کردهایم تا بهترین گزینه را بر اساس نیاز خود انتخاب کنید:
| روش غیرفعالسازی | ویژگیها و میزان تاثیرگذاری |
|---|---|
| ویرایش فایل htaccess. | عالی – مسدودسازی در سطح سرور، صفر شدن مصرف منابع و بالاترین کارایی. |
| تنظیمات وبسرور Nginx | فوقالعاده – مناسب برای سرورهای اختصاصی و سایتهای بسیار پرترافیک. |
| استفاده از افزونه (Plugin) | بسیار ساده – بدون نیاز به دانش فنی، اما کمی مصرف پردازنده دارد. |
| کد functions.php | متوسط – توابع را غیرفعال میکند اما درخواستهای HTTP به فایل ارسال میشوند. |
اگر پورتفولیوی کسبوکار خود را روی بسترهای وردپرسی راهاندازی میکنید، بهویژه در گروههای طراحی سایت شرکتی، اعمال این تنظیمات سختگیرانه روی هاست، امنیت اعتبار برند شما را حفظ میکند.
چطور وضعیت غیرفعال بودن XML-RPC را تست کنیم؟
پس از انجام کدهای بالا، حتماً باید چک کنید که آیا فایل واقعاً مسدود شده است یا خیر. دو روش ساده برای این کار وجود دارد:
۱. استفاده از ابزارهای آنلاین:
میتوانید به ابزارهای آنلاین تست XML-RPC مراجعه کنید و آدرس سایت خود را وارد نمایید. اگر پیغام خطا یا Disabled داد، یعنی کار با موفقیت انجام شده است.
۲. تست دستی در مرورگر:
آدرس سایت خود را به شکل زیر در مرورگر وارد کنید:
اگر صفحه نمایش داده شده پیغام 403 Forbidden یا Access Denied داد، روش شما درست عمل کرده است. اما اگر پیغام “XML-RPC server accepts POST requests only.” را دیدید، یعنی این پروتکل هنوز روی سایت شما فعال و در دسترس هکرهاست!
اگر در هنگام ساخت فروشگاه اینترنتی با ترافیک بالا روبهرو هستید، حتماً با نصب یک ویروس کش وردپرس قوی وضعیت فایلهای سیستم را اسکن کنید.
عیبیابی سریع (Troubleshooting)
گاهی اوقات ممکن است پس از مسدود کردن XML-RPC با برخی مشکلات غیرمنتظره مواجه شوید. راه حل مشکلات رایج اینجاست:
علت و راهحل: افزونه جتپک برای اتصال به سرورهای WordPress.com به XML-RPC نیاز دارد. اگر از جتپک استفاده میکنید، به جای بستن کامل، از افزونههای مدیریت دسترسی استفاده کنید تا فقط IPهای وردپرس مجوز داشته باشند، یا اینکه Jetpack را با ابزارهای جایگزین سفارشی تعویض نمایید.
علت و راهحل: این خطاء معمولاً به دلیل اشتباه تایپی در فایل .htaccess رخ میدهد. کدهای اضافه شده را بررسی کنید و مطمئن شوید که با ساختار وبسرور شما همخوانی دارد.
علت و راهحل: اگر از اپلیکیشن رسمی وردپرس استفاده میکنید و نتوانستید وارد شوید، اپلیکیشن را به آخرین نسخه بهروزرسانی کنید تا به جای XML-RPC از REST API استفاده کند.
فراموش نکنید که حفظ امنیت بالا زیربنای اصلی موفقیت در استراتژیهای دیجیتال مارکتینگ است؛ چراکه هک شدن سایت تمام زحمات برندینگ شما را نابود میکند.