البوابة القديمة لا تزال مفتوحة. XML-RPC بروتوكول وصول بعيد قديم يسمح للأدوات الخارجية بالتفاعل مع موقعك. للأسف، هو أيضاً أحد أكثر نقاط الهجوم استغلالاً.

لماذا هذا الأمر مهم؟

XML-RPC (xmlrpc.php) يسمح بـ:

  • تضخيم القوة الغاشمة — المهاجمون يمكنهم تجربة مئات كلمات المرور في طلب واحد باستخدام طريقة system.multicall
  • هجمات DDoS عبر pingback — موقعك يمكن استخدامه كسلاح لمهاجمة مواقع أخرى
  • سرقة بيانات الاعتماد — XML-RPC يرسل أسماء المستخدمين وكلمات المرور بنص عادي (قبل التشفير على مستوى النقل)

معظم مواقع ووردبريس الحديثة لا تحتاج XML-RPC لأن:

  • REST API (المُقدم في ووردبريس 4.7) يستبدل وظائفه
  • تطبيق ووردبريس للجوال الآن يعمل مع REST API
  • Jetpack كان يتطلبه، لكن النسخ الحديثة تستخدم طرق اتصال بديلة

كيف تتحقق إذا كنت تحتاجه

قد تحتاج XML-RPC إذا كنت:

  • تستخدم نسخة قديمة من تطبيق ووردبريس للجوال أو سطح المكتب
  • تستخدم إضافات تتطلبه صراحةً (نادر بشكل متزايد)
  • تستخدم أدوات نشر خارجية لم تُحدّث إلى REST API

إذا لا ينطبق أي من هذه، عطّله.

كيفية الحل

ممارسة آمنة: قبل إجراء أي تغييرات تقنية، تأكد من وجود نسخة احتياطية كاملة لموقعك (الملفات وقاعدة البيانات) عبر لوحة تحكم الاستضافة أو إضافة متخصصة مثل UpdraftPlus.

الطريقة 1: .htaccess (مُوصى بها لـ Apache)

أضف هذا إلى ملف .htaccess، قبل قواعد إعادة كتابة ووردبريس:

# Apache .htaccess
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

الطريقة 2: Nginx

أضف إلى كتلة الخادم:

location = /xmlrpc.php {
    deny all;
    return 403;
}

الطريقة 3: mu-plugin

أنشئ ملفاً في wp-content/mu-plugins/disable-xmlrpc.php:

<?php
/**
 * Plugin Name: Dravasite – Disable XML-RPC
 * Description: يعطّل طرق WordPress XML-RPC لمنع تضخيم القوة الغاشمة
 *              وهجمات DDoS عبر pingback.
 * Version:     1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// عطّل جميع طرق XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );

ملاحظة: هذا يعطّل طرق XML-RPC لكن الملف لا يزال متاحاً. الطريقتان 1 و 2 أكثر شمولاً لأنهما تحجبان الوصول على مستوى الخادم.

جديد على mu-plugins؟ اقرأ دليلنا لإضافة مقتطفات الكود بأمان مع mu-plugins.

الطريقة 4: إضافة أمان

معظم إضافات الأمان (Wordfence, iThemes, Sucuri) لديها خيار لتعطيل XML-RPC في إعداداتها.

انتبه لهذه النقاط

  • اختبر بعد التعطيل. إذا كنت تستخدم Jetpack، تطبيق ووردبريس للجوال، أو أي أداة نشر خارجية، اختبر أنها لا تزال تعمل. إذا تعطّل شيء، أعد تفعيل XML-RPC وابحث عن بديل REST API لتلك الأداة.
  • بعض مزودي الاستضافة يحجبون XML-RPC على مستوى الخادم بالفعل. تحقق من استضافتك قبل إضافة قواعد زائدة.
  • يمكنك التحقق من تعطيل XML-RPC بزيارة yourdomain.com/xmlrpc.php — يجب أن تحصل على خطأ 403 Forbidden بدلاً من رسالة "XML-RPC server accepts POST requests only".