امروز : ۰۳ شهریور ۱۴۰۵ (2026/08/25)

XML-RPC در وردپرس چیست؟ آموزش غیرفعال‌ سازی و جلوگیری از حملات

XML-RPC وردپرس چیست؟ آموزش مقابله با حملات XMLRPC

گاهی ممکن است شما با عنوان مدیر وب سایت در لاگ های هاست و ابزار های امنیتی سایت وردپرسی خود تعداد زیادی درخواست به آدرس xmlrpc.php مشاهده کنید که تعداد این درخواست ها به گونه ای هست که اصلا عادی نیست!

وقتی تعداد درخواست های بالایی را به آدرس xmlrpc.php مشاهده کردید نباید در درجه اول به این فکر کنید که وب سایت شما هک شده است! اما بی تفاوت هم از کنار این قضیه عبور نکنید.

فایل xmlrpc.php بخشی از وردپرس است که امکان ارتباط برنامه ها و سرویس های خارجی را به سایت فراهم می کند و از وردپرس 3.5 به بعد به صورت پیش فرض در هسته وردپرس فعال می باشد و می تواند برای مدیریت محتوا٬ انتظار از راه دور و برخی سرویس های متصل به وردپرس مورد استفاده قرار بگیرد.

تا اینجا می توان گفت نه خود xmlrpc.php مورد غیرطبیعی هست نه وظیفه ای که برعهده دارد! در واقع بخشی از هسته وردپرس می باشد اما مشکل از جایی شروع می شود که همین قابلیت به عنوان هدف درخواست های مخرب٬ حملات Brute Force و مصرف غیرعادی منابع سرور قرار بگیرد بنابراین شاید به شکل ساده بتوان گفت اگر به این قابلیت نیاز ندارید فعال بودن آن هم هیچ فایده ای برای شما نخواهد داشت.

با غیرفعال کردن XML-RPC در واقع شما پتانسیل حملات به سایت خود را کاهش می دهید و کمک می کنید تا یک قدم به امنیت بیشتر نزدیک تر شوید.

ما در این آموزش قصد داریم نحوه تشخیص فعال بودن XML-RPC ٬ خطرات احتمالی فعال بودن آن و غیرفعالسازی یا محدود کردن xmlrpc.php را خدمت شما عزیزان توضیح دهیم.

 

 

XML-RPC چیست؟

همانطور که گفته شد XML-RPC در واقع یک پروتکل ارتباطی هست که به نرم افزار ها و سرویس های دیگر اجازه می دهد از راه دور با سایت وردپرسی ارتباط بگیرند.

در واقع این قابلیت کمک می کند یک برنامه خارجی به صورت ریموت به سایت وصل شود و بدون ورود مستقیم به پیشخوان وردپرس٬ درخواست هایی مانند انتشار یا ویرایش نوشته٬ مدیریت دیدگاه ها و دریافت اطلاعات سایت را ارسال کند.

در وردپرس این ارتباط از طریق فایل xmlrpc.php انجام می شود که در ریشه اصلی سایت یا همان محل نصب وردپرس قرار دارد و در گذشته به طور گسترده تری برای اتصال اپلیکیشن های موبایل٬ ابزارهای انتشار از راه دور و برخی سرویس های جانبی به وردپرس استفاده می شد.

اگر بخواهیم این قابلیت را بررسی کنیم باید بگوییم خود XML-RPC به تنهایی یک بدافزار یا حفره امنیتی نیست و اگر اینطور بود وردپرس در آپدیت های خود این قابلیت را برمی داشت! اما از آنجایی که امکان ارسال درخواست از راه دور به وردپرس را فراهم می کند می تواند جهت سواستفاده های احتمالی در حملاتی نظیر بروت فورس و درگیر کردن منابع بالای هاست و سرور مورد سواستفاده قرار بگیرد.

وقتی شما به عنوان مدیر سایت به صورت ریموت و از راه دور به وردپرس خود متصل نمی شوید دلیلی هم برای فعال ماندن این قابلیت ندارید و بهتر است محدودیت های لازم جهت عدم دسترسی به این فایل را اعمال کنید.

 

چگونه بفهمیم XML-RPC سایت فعال است؟

نحوه تشخیص فعال بودن این قابلیت در سایت های وردپرسی بسیار ساده هست. چون این فایل در ریشه اصلی وردپرس قرار دارد خیلی ساده می توان در مرورگر با آدرس دامنه بررسی کرد این قابلیت فعال می باشد یا خیر.

ساده‌ ترین روش این است که آدرس زیر را در مرورگر باز کنید:

https://example.com/xmlrpc.php

اگر به جای دامنه example.com نام دامنهخود را قرار دهید می توانید بررسی داشته باشید این قابلیت فعال هست یا خیر.

 

 

اگر XML-RPC مستقیما قابل دسترسی باشد، معمولا پیامی مشابه زیر مشاهده می‌ کنید:

XML-RPC server accepts POST requests only.

پیامی که مشاهده می کنید در واقع رفتار خود XML-RPC می باشد چون در وردپرس تعریف شده است درخواست های اصلی این سرویس باید با متد POST ارسال شوند. بنابراین وقتی این پیام را مشاهده کردید یعنی این قابلیت فعال هست و هیچ محدودیتی روی آن اعمال شده نیست.

 

 

اما در عوض اگر خطای 403 Forbidden دریافت کردید نشان می دهد احتمالا دسترسی به این فایل xmlrpc.php توسط وب سرور٬ فایروال یا افزونه های امنیتی مسدود شده هست و مشکلی ندارد.

 

بررسی XML-RPC با curl:

یک راهکار ساده دیگر برای تست بررسی اینکه این قابلیت فعال هست یا خیر استفاده از curl جهت ارسال درخواست به این فایل می باشد.

در صورت دسترسی به Terminal می‌ توانید از دستور زیر نیز استفاده کنید:

curl -I https://example.com/xmlrpc.php

البته وضعیت HTTP به تنظیمات وب‌ سرور، CDN و افزونه‌ های امنیتی بستگی دارد؛ بنابراین فقط بر اساس یک Status Code درباره فعال یا غیرفعال بودن XML-RPC نتیجه‌گیری نکنید.

 

 

 

نحوه غیرفعال کردن XML-RPC در وردپرس:

اگر اطمینان دارید که سایت شما به این قابلیت نیاز ندارد بهترین گزینه این است که دسترسی به xmlrpc.php را از سمت وب سرور ببندید.

با این کار درخواست های مربوط به این فایل قبل از اینکه به وردپرس برسند مسدود می شوند.

روش انجام این کار برای وب سرور هایی نظیر LiteSpeed و Apache بسیار ساده است.

 

1- غیرفعال کردن XML-RPC در htacces.:

هاست وردپرس برای افزایش عملکرد و راندمان بهتر پاسخگویی درخواست ها عموما از وب سروری نظیر لایت اسپید استفاده می کند. 

اگر هاست شما هم دارای لایت اسپید هست و از Cpanel یا DirectAdmin استفاده می کنید برای بستن این قابلیت تنها کافی هست ابتدا وارد File Manager هاست شوید و به پوشه اصلی سایت بروید. در بیشتر هاست‌ ها این پوشه همان:

public_html

می باشد که وردپرس در این مسیر نصب شده هست. اگر شما از دامنه اضافه یا روی ساب دامنه برای نصب وردپرس استفاده کردید دقیقا باید وارد همان مسیر شوید.

در این قسمت فایل زیر را پیدا کنید:

.htaccess

قبل از تغییر این فایل بهتر است یک نسخه از آن دانلود کنید تا اگر مشکلی ایجاد شد بتوانید فایل قبلی را برگردانید.

حالا فایل .htaccess را ویرایش کنید و کد زیر را به آن اضافه کنید:

<Files "xmlrpc.php">
    Require all denied
</Files>

سپس فایل را ذخیره کنید.

این کد به وب‌ سرور می‌گوید که اجازه دسترسی به فایل xmlrpc.php را به کاربران اینترنت ندهد.

برای بررسی نتیجه، آدرس XML-RPC سایت خود را در مرورگر باز کنید:

https://example.com/xmlrpc.php

اگر تنظیمات به‌ درستی اعمال شده باشد، معمولاً با خطای 403 Forbidden یا پیام عدم دسترسی رو به‌ رو خواهید شد.

این روش برای وب سرور آپاچی و لایت اسپید مشترک هست و تفاوتی ندارد از کدام وب سرور استفاده می کنید با این روش روی هر دو وب سرور می توانید درخواست ها را ببندید.

 

اگر کد Require all denied کار نکرد چه کنیم؟

در خیلی از سرورها ممکن است از نسخه های قدیمی Apache استفاده شود که در این شرایط باید از ساختار های قدیمی دستورات .htaccess استفاده شود که در این شرایط که اگر کد قبلی کار نکرد از کد زیر استفاده کنید.

<Files "xmlrpc.php">
    Order Allow,Deny
    Deny from all
</Files>

اما اگر سرور شما از Apache 2.4 یا نسخه‌ های جدیدتر استفاده می‌ کند، بهتر است همان روش اول یعنی:

Require all denied

را استفاده کنید.

 

2- محدود کردن XML-RPC با افزونه وردپرس:

اگر به هر دلیلی به هاست دسترسی ندارید یا نمی خواهید مستقیم فایل .htaccess را ویرایش کنید بهتر است از افزونه های امنیتی برای محدود کردن XML-RPC استفاده کنید.

این روش برای کاربرانی که با کنترل پنل های هاست آشنایی ندارند هم مناسب تر است.

یکی از گزینه‌ ها Wordfence Security است. این افزونه بخشی برای کنترل ورود از طریق XML-RPC دارد و می‌ تواند درخواست‌ هایی که برای احراز هویت از XML-RPC استفاده می‌ کنند مسدود کند.

بعد از نصب و فعال‌ سازی Wordfence، وارد پیشخوان وردپرس شوید و از منوی:

Wordfence → Login Security → Settings

به بخش تنظیمات XML-RPC بروید.

در این قسمت گزینه Disable XML-RPC authentication را مشاهده می‌کنید. با فعال کردن این گزینه، درخواست‌ های XML-RPC که نیاز به نام کاربری و رمز عبور دارند رد می‌ شوند. در نتیجه مسیر XML-RPC دیگر نمی‌ تواند برای ورود به حساب‌ های وردپرس مورد استفاده قرار بگیرد.

نکته: مهم این است که این گزینه خود فایل xmlrpc.php را به‌ طور کامل نمی‌ بندد٬ بلکه بخش احراز هویت XML-RPC را غیرفعال می‌ کند. بنابراین با روشی که قبلا در .htaccess توضیح دادیم تفاوت دارد.

در روش .htaccess دسترسی به فایل از سمت وب‌ سرور مسدود می‌ شود، اما Wordfence می‌تواند فقط بخش‌ های حساس مربوط به ورود را محدود کند.

این روش زمانی مناسب است که نمی‌خواهید XML-RPC را به‌طور کامل از دسترس خارج کنید، اما قصد دارید جلوی استفاده از آن برای حملات Brute Force را بگیرید.

اگر از Jetpack، اپلیکیشن وردپرس یا سرویس دیگری که برای اتصال به سایت از نام کاربری و رمز عبور XML-RPC استفاده می‌ کند استفاده می‌ کنید، فعال کردن این گزینه ممکن است ارتباط آن سرویس را قطع کند. خود Wordfence نیز به این موضوع اشاره کرده است.

بنابراین اگر هیچ استفاده‌ای از XML-RPC ندارید، مسدود کردن کامل آن در .htaccess روش ساده‌ تری است. اما اگر هنوز به بخشی از قابلیت‌های XML-RPC نیاز دارید، استفاده از یک افزونه امنیتی برای محدود کردن آن انتخاب انعطاف‌ پذیرتری خواهد بود.

 

بعد از غیرفعال کردن XML-RPC چه چیزی را تست کنیم؟

بعد از اعمال تغییرات فقط به باز شدن یا نشدن xmlrpc.php اکتفا نکنید.

موارد زیر را نیز بررسی کنید:

وارد مدیریت وردپرس شوید.

یک نوشته آزمایشی ویرایش کنید.

Cron و عملیات عادی سایت را بررسی کنید.

در صورت استفاده از Jetpack اتصال آن را بررسی کنید.

برنامه موبایل یا سرویس انتشار از راه دور را تست کنید.

خطاهای Error Log را بررسی کنید.

Cache سایت و CDN را پاک کنید.

دوباره Access Log را بررسی کنید.

اگر سرویسی پس از مسدودسازی XML-RPC از کار افتاد، به‌جای بازکردن کامل آن بررسی کنید که آیا می‌ توان دسترسی را محدود یا از روش ارتباطی جدیدتری استفاده کرد.

 

جمع‌ بندی:

قابلیت XML-RPC اگرچه در بسیاری از سایت ها فعال می باشد اما اکثر کاربران وردپرسی از آن استفاده نمی کنند و کاربرد واقعی ندارد.

اگر هیچ سرویس یا قابلیتی از این ویژگی استفاده نمی کنند باز گذاشتن فایل xmlrpc.php تنها یک مسیر اضافه برای دریافت درخواست های ناخواسته ایجاد می کند.

بستن این فایل در سطح وب سرور می تواند گزینه مناسبی برای جلوگیری از این درخواست ها باشد و اگر هم به این قابلیت نیاز دارید بهتر است به جای غیرفعالسازی کامل٬ دسترسی آن را مطابق با آموزش هایی که دادیم محدود کنید تا هم سرویس مورد نیاز به کار خود ادامه دهد و هم درخواست های مشکوک بسته شوند.

در نهایت، هدف از غیرفعال یا محدود کردن XML-RPC این نیست که به‌ تنهایی امنیت وردپرس را تضمین کند٬ بلکه یکی از اقداماتی است که در کنار رمز عبور قوی، بروزرسانی وردپرس و افزونه‌ ها، فایروال و کنترل تلاش‌ های ورود می‌ تواند سطح امنیت سایت را بالاتر ببرد.

Rate this post