غیرفعال کردن XML-RPC وردپرس برای امنیت بیشتر + آموزش ویدیویی

XML-RPC یکی از راههای قدیمی برای ارتباط برنامهها با وردپرسه. اپلیکیشن موبایل، ابزارهای انتشار از راه دور و بعضی سرویسها برای وصل شدن به سایتتون از فایل xmlrpc.php کمک میگیرن. البته همین مسیر ممکنه هدف درخواستهای ورود پرتعداد یا سوءاستفاده از قابلیت پینگبک هم قرار بگیره.
بااینحال، غیرفعال کردن کامل XML-RPC برای هر سایتی انتخاب درستی نیست. قبل از هر کاری باید مطمئن بشید سایتتون به این مسیر وابسته نیست. توی این راهنما تفاوت محدود کردن XML-RPC با مسدود کردن کامل اون رو توضیح میدیم، سراغ قابلیت داخلی وردپرس میریم و روش کار با افزونه رایگان Disable XML-RPC رو قدمبهقدم میبینیم.
آنچه در این مقاله میخوانید
XML-RPC وردپرس چیه؟
XML-RPC یک رابط برنامهنویسی یا API هست. API به زبان ساده یعنی راه مشخصی که دو نرمافزار با کمک اون با هم ارتباط برقرار میکنن. مثلاً یک برنامه بیرون از سایت میتونه درخواستی برای وردپرس بفرسته و اگه مجوز درست داشته باشه، نوشتهای رو منتشر یا ویرایش کنه.
وردپرس این قابلیت رو از هسته خودش حذف نکرده و سرور XML-RPC هنوز بخشی از هسته وردپرس هست. بنابراین، فعال بودن فایل xmlrpc.php بهتنهایی نشونه هک شدن سایت یا یک مشکل امنیتی نیست.
آیا باید XML-RPC وردپرس رو غیرفعال کنیم؟
اگه از جتپک، اپلیکیشن موبایل وردپرس، انتشار از راه دور یا سرویسهای وابسته به XML-RPC استفاده نمیکنید، محدود کردن این قابلیت میتونه سطح حمله سایتتون رو کمتر کنه. حملههای ورود پرتعداد و سوءاستفاده از پینگبک برای فرستادن درخواست به سایتهای دیگه، دو نمونه شناختهشده مرتبط با XML-RPC هستن.
ولی XML-RPC به مهاجم اجازه نمیده بدون مجوز معتبر هر اطلاعاتی رو از سایتتون برداره. وردپرس برای کارهایی که به حساب کاربری نیاز دارن، همچنان نام کاربری، رمز یا روش معتبر دیگهای برای احراز هویت رو بررسی میکنه.
اگه از جتپک استفاده میکنید، XML-RPC رو بدون بررسی نبندید. جتپک برای وصل کردن سایت به WordPress.com به این مسیر نیاز داره و مسدود کردن اون ممکنه اتصال یا بعضی از قابلیتهای افزونه رو از کار بندازه.
قابلیت داخلی وردپرس برای کنترل XML-RPC
خود وردپرس ابزارهای برنامهنویسی لازم برای کنترل XML-RPC رو داره. فیلتر xmlrpc_enabled متدهایی رو کنترل میکنه که به احراز هویت نیاز دارن. هوکxmlrpc_methods هم به توسعهدهنده اجازه میده متدهای مشخصی رو حذف کنه یا تغییر بده. هوک یعنی نقطهای در وردپرس که برنامهنویس میتونه رفتار یک بخش رو عوض کنه.
نکته مهم اینه که داخل پیشخوان وردپرس دکمه آمادهای برای خاموش کردن کامل XML-RPC پیدا نمیکنید. این قابلیت داخلی بهشکل فیلتر و هوک برنامهنویسی در دسترسه و استفاده مستقیم از اون به کدنویسی نیاز داره. افزونه رایگانی که جلوتر معرفی میکنیم، همین فیلتر داخلی رو بدون نوشتن کد فعال میکنه.
وردپرس قابلیت «رمز عبور برنامه» رو هم داره. این رمز جدا از رمز اصلی حسابتون ساخته میشه و هر وقت لازم باشه میتونید لغوش کنید. برای ابزارهای جدیدی که از REST API پشتیبانی میکنن، معمولاً استفاده از این روش بهتر از بهاشتراکگذاشتن رمز اصلی حسابه. REST API هم راه جدیدتری برای ارتباط برنامهها با وردپرسه. جزئیات این قابلیت رو میتونید در راهنمای رسمی رمزهای عبور برنامه وردپرس بخونید.
پیشنیازهای غیرفعال کردن XML-RPC
- مطمئن بشید جتپک یا سرویس متصل به WordPress.com روی سایتتون فعال نیست.
- اگه با اپلیکیشن موبایل یا ابزار دیگهای نوشته منتشر میکنید، اول بررسی کنید که اون ابزار به XML-RPC وابسته هست یا نه.
- قبل از هر تغییر امنیتی، یک نسخه پشتیبان سالم و قابل استفاده از سایتتون داشته باشید.
- برای جلوگیری از حملههای ورود، فقط به این تغییر تکیه نکنید. راهکارهای کاملتر رو در آموزش جلوگیری از حملات Brute Force در وردپرس هم ببینید.
غیرفعال کردن XML-RPC با افزونه رایگان
برای روش ساده از افزونه رایگان Disable XML-RPC استفاده میکنیم. این افزونه داخل مخزن رسمی WordPress.org منتشر شده، پس نیازی نیست فایل ZIP اون رو از سایتهای متفرقه دانلود کنید.
مرحله اول: افزونه رو پیدا کنید
اول وارد پیشخوان وردپرس بشید. از منوی «افزونهها» روی «افزودن افزونه تازه» کلیک کنید. عبارت Disable XML-RPC رو داخل کادر جستوجو بنویسید و مشخصات افزونه رو با صفحه رسمی اون در مخزن وردپرس تطبیق بدید.

مرحله دوم: افزونه رو نصب و فعال کنید
روی «هماکنون نصب نمایید» کلیک کنید و منتظر بمونید نصب تموم بشه. بعد دکمه «فعال نمایید» رو بزنید. این افزونه صفحه تنظیمات جداگانهای نداره. بهمحض فعال شدن، فیلتر داخلی وردپرس رو به کار میگیره تا متدهایی رو ببنده که به احراز هویت نیاز دارن.
محدودیت مهم افزونه Disable XML-RPC
اسم افزونه ممکنه این برداشت رو ایجاد کنه که کل فایل xmlrpc.php از دسترس خارج میشه، ولی عملکرد فنی اون محدودتره. این افزونه از فیلتر xmlrpc_enabled استفاده میکنه. طبق مستندات رسمی این فیلتر، فقط متدهایی غیرفعال میشن که به احراز هویت نیاز دارن.
یعنی ممکنه بعضی متدهای بدون احراز هویت و قابلیتهایی مثل پینگبک همچنان در دسترس بمونن. اگه میخواید فایل xmlrpc.php بهطور کامل مسدود بشه، باید این کار رو از راه فایروال یا تنظیمات وبسرور انجام بدید. روش دقیق به نوع سرور و شرکت هاستینگتون بستگی داره. پس از پشتیبانی هاست بخواید این مسیر رو مسدود کنه و قبل از انجام کار، وابستگی سرویسهای سایتتون رو هم بررسی کنه.
روش مطمئن تست XML-RPC
باز کردن آدرس example.com/xmlrpc.php داخل مرورگر، راه مطمئنی برای فهمیدن وضعیت XML-RPC نیست. مرورگر معمولاً درخواست GET میفرسته، ولی XML-RPC به درخواست POST نیاز داره. GET و POST دو روش متفاوت برای فرستادن درخواست به سرور هستن. پس اگه پیامی شبیه «فقط درخواست POST پذیرفته میشه» دیدید، نمیشه از روی اون نتیجه گرفت که افزونه کار نکرده.
بعد از فعال کردن افزونه، برنامه یا ابزاری رو که قبلاً از XML-RPC استفاده میکرد دوباره امتحان کنید. اگه اتصال اون قطع شد، یعنی افزونه متدهای نیازمند احراز هویت رو محدود کرده. برای بررسی فنیتر هم بهتره از پشتیبانی هاست بخواید یک درخواست POST کنترلشده بفرسته و پاسخ سرور رو بررسی کنه. راهنمای رفع مشکل اتصال جتپک هم توضیح میده که چرا باز کردن ساده آدرس در مرورگر نتیجه قطعی به شما نمیده.
افزایش امنیت بدون غیرفعال کردن کامل XML-RPC
اگه سایتتون به XML-RPC نیاز داره، لازم نیست کل مسیر رو ببندید. میتونید تعداد درخواستهای ورود رو در فایروال محدود کنید، ورود دومرحلهای رو فعال کنید، برای هر حساب یک رمز قوی و منحصربهفرد بذارید و حسابهای مدیر اضافی رو حذف کنید.
اگه فقط پینگبک براتون دردسر درست کرده، از پشتیبانی هاست یا توسعهدهنده بخواید فقط متدهای مربوط به پینگبک رو محدود کنه. این روش دقیقتره و احتمال خراب شدن اتصال ابزارهای ضروری سایتتون رو کمتر میکنه.
برای سایتی که هیچ وابستگیای به XML-RPC نداره، فعال کردن افزونه رایگان این آموزش راه سادهای برای بستن متدهای حساسه. ولی اگه هدفتون مسدود کردن کامل این مسیره، به تنظیم فایروال یا وبسرور نیاز دارید و افزونه معرفیشده بهتنهایی کافی نیست.
آموزش ویدیویی قدیمی
ویدیوی زیر در تاریخ ۱۱ دی ۱۳۹۶ ضبط شده و ممکنه ظاهر پیشخوان یا جزئیات افزونه در اون با نسخه فعلی فرق داشته باشه. برای انجام درست کار، مراحل متنی همین صفحه رو مبنا قرار بدید.
سؤالات متداول
آیا فعال بودن XML-RPC یعنی سایت ناامنه؟
نه. XML-RPC یکی از قابلیتهای هسته وردپرسه و فعال بودنش بهتنهایی نشونه هک شدن یا ضعف امنیتی نیست. اگه به اون نیاز ندارید، محدود کردنش میتونه سطح حمله سایتتون رو کمتر کنه.
آیا خود وردپرس گزینه خاموش کردن XML-RPC رو داره؟
وردپرس داخل پیشخوان دکمه آمادهای برای خاموش کردن کامل XML-RPC نداره، ولی فیلترها و هوکهای برنامهنویسی مثل xmlrpc_enabled و xmlrpc_methods داخل هسته اون هستن.
افزونه Disable XML-RPC رایگانه؟
بله. این افزونه داخل مخزن رسمی WordPress.org منتشر شده و میتونید اون رو مستقیم از بخش افزودن افزونه تازه نصب کنید.
آیا این افزونه فایل xmlrpc.php رو کاملاً مسدود میکنه؟
نه، لزوماً اینطور نیست. افزونه با کمک فیلتر داخلی وردپرس، متدهای نیازمند احراز هویت رو محدود میکنه؛ ولی ممکنه بعضی متدهای بدون احراز هویت همچنان در دسترس بمونن. برای مسدودسازی کامل معمولاً باید فایروال یا وبسرور رو تنظیم کنید.
با وجود جتپک میتونیم XML-RPC رو ببندیم؟
بهتره بدون بررسی این کار رو انجام ندید. جتپک برای وصل کردن سایت به WordPress.com به xmlrpc.php نیاز داره و مسدود کردن اون ممکنه اتصال یا بعضی قابلیتها رو خراب کنه.

سلام وقت بخیر
من این فازونه رو نصب کردن و بعد از غیر فعال شدن xml الان دیگه سایتم توی جست و جوی گوگل بالا نمیاد چیکار باید بکنم ممنون میشم پاسخ بدین
سلام از این نمیتونه باشه موارد دیگه رو چک کنید.
سلام وقتتون بخیر
یه سوالم داشتم ارور xml برای چی پیش میاد؟
This XML file does not appear to have any style information associated with it. The document tree is shown below.
wp_die500
سلام میتونه بخاطر نصب قالب یا افزونه مخرب یا ناقص باشه.