دليل كامل عن xmlrpc.php في WordPress (ما هو ، مخاطر الأمان ، كيفية تعطيله)

نشرت: 2020-07-06

تم تطوير مواصفات XML-RPC WordPress لتوحيد الاتصال بين الأنظمة المختلفة ، مما يعني أن التطبيقات خارج WordPress (مثل منصات التدوين الأخرى وعملاء سطح المكتب) يمكن أن تتفاعل مع WordPress.

كانت هذه المواصفات جزءًا من WordPress منذ إنشائها وقد قامت بعمل مفيد للغاية. بدونها ، سيكون WordPress في صومعته الخاصة ، ومنفصلًا عن بقية الإنترنت.

ومع ذلك ، فإن xmlrpc.php له سلبياته. يمكنه إدخال نقاط ضعف إلى موقع WordPress الخاص بك وقد تم استبداله الآن بواسطة WordPress REST API ، والذي يقوم بعمل أفضل بكثير في فتح WordPress للتطبيقات الأخرى.

في هذا المنشور ، سنشرح ما هو xmlrpc.php ، ولماذا يجب عليك تعطيله ، ونساعدك على تحديد ما إذا كان يعمل على موقع WordPress الخاص بك.

مستعد؟ دعنا نتعمق!

ما هو xmlrpc.php؟

XML-RPC هو أحد المواصفات التي تتيح الاتصال بين WordPress والأنظمة الأخرى. لقد فعلت ذلك من خلال توحيد تلك الاتصالات ، باستخدام HTTP كآلية نقل و XML كآلية تشفير.

يسبق XML-RPC WordPress: كان موجودًا في برنامج التدوين b2 ، والذي تم تقسيمه لإنشاء WordPress مرة أخرى في عام 2003. يتم تخزين الكود الموجود خلف النظام في ملف يسمى xmlrpc.php ، في الدليل الجذر للموقع. ولا يزال موجودًا ، على الرغم من أن XML-RPC قديم إلى حد كبير.

في الإصدارات القديمة من WordPress ، تم إيقاف تشغيل XML-RPC افتراضيًا. ولكن منذ الإصدار 3.5 ، تم تمكينه افتراضيًا. كان السبب الرئيسي لذلك هو السماح لتطبيق WordPress للجوال بالتحدث إلى تثبيت WordPress الخاص بك.

إذا كنت تستخدم تطبيق WordPress للجوال قبل الإصدار 3.5 ، فقد تتذكر أنك اضطررت إلى تمكين XML-RPC على موقعك حتى يتمكن التطبيق من نشر المحتوى. كان هذا لأن التطبيق لم يكن يشغل WordPress نفسه ؛ بدلاً من ذلك ، كان تطبيقًا منفصلاً يتواصل مع موقع WordPress الخاص بك باستخدام xmlrpc.php.

ولكن لم يكن فقط تطبيق الهاتف المحمول الذي تم استخدام XML-RPC من أجله: فقد تم استخدامه أيضًا للسماح بالاتصال بين WordPress ومنصات التدوين الأخرى ، كما أنه مكّن من عمليات التتبع وإعادة الإرسال ، كما قام بتشغيل المكوّن الإضافي Jetpack الذي يربط WordPress المستضافة ذاتيًا موقع WordPress.com.

ولكن منذ أن تم دمج واجهة برمجة تطبيقات REST في نواة WordPress ، لم يعد ملف xmlrpc.php مستخدمًا لهذا الاتصال. بدلاً من ذلك ، يتم استخدام واجهة برمجة تطبيقات REST للتواصل مع تطبيق WordPress للجوال ، مع عملاء سطح المكتب ، ومنصات التدوين الأخرى ، مع WordPress.com (للمكوِّن الإضافي Jetpack) ومع الأنظمة والخدمات الأخرى. نطاق الأنظمة التي يمكن أن تتفاعل معها واجهة برمجة تطبيقات REST أكبر بكثير من النطاق الذي يسمح به xmlrpc.php. أيضا ، هناك الكثير من المرونة.

نظرًا لأن REST API قد حلت محل XML-RPC ، يجب عليك الآن تعطيل xmlrpc.php على موقعك. دعنا نرى لماذا.

لماذا يجب عليك تعطيل xmlrpc.php

السبب الرئيسي لتعطيل xmlrpc.php على موقع WordPress الخاص بك هو أنه يقدم ثغرات أمنية ويمكن أن يكون هدفًا للهجمات.

الآن بعد أن لم تعد هناك حاجة إلى XML-RPC للتواصل خارج WordPress ، فلا يوجد سبب لإبقائه نشطًا. لهذا السبب من الحكمة أن تجعل موقعك أكثر أمانًا عن طريق تعطيله.

إذا كان xmlrpc.php يمثل مسؤولية أمنية ولم يعد يؤدي وظيفة ، فلماذا لم تتم إزالته من WordPress تمامًا؟

والسبب في ذلك هو أن إحدى الميزات الرئيسية في WordPress ستكون دائمًا التوافق مع الإصدارات السابقة. إذا كنت تدير موقعك جيدًا ، فستعرف أن الحفاظ على تحديث WordPress ، بالإضافة إلى أي مكونات إضافية أو سمات ، أمر ضروري.

ولكن سيكون هناك دائمًا مالكو مواقع الويب الذين لا يرغبون أو غير قادرين على تحديث إصدار WordPress الخاص بهم. إذا كانوا يشغلون إصدارًا يسبق REST API ، فسيظلون بحاجة إلى الوصول إلى xmlrpc.php.

دعونا نلقي نظرة على نقاط الضعف المحددة بمزيد من التفصيل.

هجمات DDoS عن طريق XML-RPC Pingbacks

إحدى الوظائف التي قام xmlrpc.php بتمكينها كانت pingbacks و trackbacks. هذه هي الإشعارات التي تظهر في التعليقات على موقعك عندما ترتبط مدونة أو موقع آخر بالمحتوى الخاص بك.

كانت مواصفات XML-RPC هي التي جعلت هذا الاتصال ممكنًا ، ولكن تم استبداله بواجهة برمجة تطبيقات REST (كما رأينا بالفعل).

إذا تم تمكين XML-RPC على موقعك ، فمن المحتمل أن يقوم المخترق بشن هجوم DDoS على موقعك من خلال استغلال xmlrpc.php لإرسال عدد كبير من عمليات pingbacks إلى موقعك في وقت قصير. قد يؤدي هذا إلى زيادة التحميل على الخادم وإيقاف تشغيل موقعك.

هجمات القوة الغاشمة عبر XML-RPC

في كل مرة يقدم xmlrpc.php طلبًا ، فإنه يرسل اسم المستخدم وكلمة المرور للمصادقة. يمثل هذا مسؤولية أمنية كبيرة وهو أمر لا تفعله REST API. في الواقع ، تستخدم واجهة برمجة تطبيقات REST بروتوكول OAuth الذي يرسل الرموز المميزة للمصادقة بدلاً من أسماء المستخدمين أو كلمات المرور.

نظرًا لأن xmlrpc.php يرسل معلومات المصادقة مع كل طلب ، يمكن للقراصنة استخدامها لمحاولة الوصول إلى موقعك. قد يسمح هجوم القوة الغاشمة مثل هذا بإدراج محتوى أو حذف رمز أو إتلاف قاعدة البيانات الخاصة بك.

إذا أرسل أحد المهاجمين طلبات كافية إلى موقعك ، ولكل منها اسم مستخدم وكلمة مرور مختلفان ، فهناك احتمال أن يصلوا في النهاية إلى الاسم الصحيح ، مما يمنحهم إمكانية الوصول إلى موقعك.

لهذا السبب ، إذا كنت تقوم بتشغيل إصدار محدث من WordPress ، والذي يستخدم واجهة برمجة تطبيقات REST للتواصل مع الأنظمة الخارجية ، فيجب عليك تعطيل xmlrpc.php . ليست هناك حاجة إليها ويمكن أن تجعل موقعك عرضة للخطر.


هل يعمل xmlrpc.php على موقع WordPress الخاص بك؟

أول شيء عليك القيام به هو تحديد ما إذا كان xmlrpc.php يعمل على موقع WordPress الخاص بك.

هذه ليست حالة بسيطة للتحقق مما إذا كان الملف موجودًا: إنه جزء من كل تثبيت WordPress وسيكون موجودًا حتى إذا تم تعطيل XML-RPC.

للتحقق مما إذا كان xmlrpc.php ممكّنًا على موقعك ، استخدم خدمة التحقق من صحة WordPress XML-RPC. سيؤدي هذا إلى التحقق من موقعك وإخبارك إذا تم تمكين xmlrpc.php.

خدمة التحقق من صحة WordPress XML-RPC
خدمة التحقق من صحة WordPress XML-RPC

هذه هي النتيجة التي حصلت عليها عندما راجعت هذا الموقع على الخدمة.

فحص Kinsta XML-RPC
فحص Kinsta XML-RPC

يوضح هذا أنه تم تعطيل xmlrpc.php على kinsta.com. لذا ، إذا قمت بإجراء الفحص واكتشفت أن xmlrpc.php لا يزال ممكّنًا على موقعك ، فكيف يمكنك إيقاف تشغيله؟

كيفية تعطيل xmlrpc.php

هناك ثلاث طرق لتعطيل xmlrpc.php:

دعونا نلقي نظرة على كل واحد على حدة.

كيفية تعطيل xmlrpc.php باستخدام البرنامج المساعد

تثبيت البرنامج المساعد لتعطيل xmlrpc.php هو أسهل طريقة للقيام بذلك. سيعمل المكون الإضافي Disable XML-RPC على تعطيله تمامًا. إليك كيف تستخدمه.

نقطة البداية الخاصة بي هي موقع الويب الخاص بي ، حيث يتم تمكين xmlrpc.php. يمكنك أن ترى هذا عبر الشيك الذي قمت به:

موقع Rachel McCollin على الويب - فحص XML-RPC
موقع Rachel McCollin على الويب - فحص XML-RPC

قم بتثبيت المكون الإضافي عبر شاشة الملحقات الخاصة بك في مسؤول WordPress ، وقم بتنشيطه.

لا يتعين عليك فعل أي شيء آخر: سيؤدي تنشيط المكون الإضافي إلى تعطيل XML-RPC. الآن إذا أجريت فحصًا على موقعي ، فسأحصل على نتيجة مختلفة:

موقع Rachel McCollin - فحص XML-RPC الثاني
موقع Rachel McCollin - فحص XML-RPC الثاني

بكل بساطة!

تعطيل XML-RPC Pingbacks مع البرنامج المساعد

ولكن ماذا لو كنت تريد تعطيل بعض جوانب xmlrpc.php وليس غيرها؟ يتيح لك المكون الإضافي Disable XML-RPC Pingback تعطيل وظيفة pingback فقط ، مما يعني أنه لا يزال بإمكانك الوصول إلى ميزات XML-RPC الأخرى إذا كنت بحاجة إليها.

يعمل المكون الإضافي بنفس طريقة عمل المكون الإضافي Disable XML-RPC: فقط قم بتثبيته وتنشيطه وسيعمل.

تكوين تنشيط XML-RPC و REST API مع البرنامج المساعد

إذا كنت تريد المزيد من التحكم الدقيق في كيفية تكوين كل من xmlrpc.php وواجهة برمجة تطبيقات REST على موقعك ، فيمكنك تثبيت المكون الإضافي REST XML-RPC Data Checker.

بمجرد تثبيت هذا المكون الإضافي وتنشيطه ، انتقل إلى الإعدادات> REST XML-RPC Data Checker وانقر فوق علامة التبويب XML-RPC .

مدقق بيانات REST XML-RPC
مدقق بيانات REST XML-RPC

يتيح لك هذا تكوين جوانب xmlrpc.php النشطة على موقعك بالضبط.

هل تحتاج إلى استضافة سريعة وآمنة وصديقة للمطورين؟ تم تصميم Kinsta مع وضع مطوري WordPress في الاعتبار ويوفر الكثير من الأدوات ولوحة تحكم قوية. تحقق من خططنا

بدلاً من ذلك ، يمكنك ببساطة إيقاف تشغيله تمامًا. وإذا كنت تريد أيضًا التحكم في REST API ، فإن المكون الإضافي يمنحك علامة تبويب أخرى لذلك.

كيفية تعطيل xmlrpc.php بدون البرنامج المساعد

إذا كنت تفضل عدم تثبيت مكون إضافي آخر على موقعك ، فيمكنك تعطيل xmlrpc.php عن طريق إضافة بعض التعليمات البرمجية في عامل التصفية أو إلى ملف htaccess. لنلق نظرة على كلا الطريقتين.

قم بتعطيل xmlrpc.php عبر عامل التصفية

أحد الخيارات هنا هو استخدام مرشح xmlrpc_enabled لتعطيل xmlrpc.php. أضف هذه الوظيفة إلى مكون إضافي وقم بتنشيطها على موقعك:

 add_filter( 'xmlrpc_enabled', '__return_false' );

يمكنك إضافة هذا إلى ملف وظائف القالب الخاص بك ولكن من الأفضل كتابة مكون إضافي.

يتعلق الخيار الآخر بتحرير ملف htaccess الخاص بك ، والذي يتوفر مع مزودي الاستضافة الذين يستخدمون Apache ، عن طريق الاتصال بخادم موقعك عبر FTP أو cPanel.

قم بتعطيل xmlrpc.php عبر ملف htacess

في ملف htaccess الخاص بك ، أضف هذا الرمز:

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

تأكد من عمل نسخة من الملف القديم قبل القيام بذلك ، في حالة مواجهة أية مشكلات.

اطلب من موفر الاستضافة الخاص بك تعطيل xmlrpc.php

بدلاً من ذلك ، سيقوم بعض موفري الاستضافة بتعطيل xmlrpc.php إذا تم اكتشاف هجوم.

في Kinsta ، عند اكتشاف هجوم عبر XML-RPC ، تتم إضافة مقتطف من التعليمات البرمجية تلقائيًا إلى ملف Nginx.config:

 location ~* ^/xmlrpc.php$ { return 403; }

سيؤدي هذا إلى ظهور خطأ 403 وإيقاف الهجوم في مساراته.

إذا كنت تفعل هذا بنفسك ، فمن الأفضل استخدام إحدى الطرق المذكورة أعلاه. ولكن قبل القيام بذلك ، تحقق دائمًا من مزود الاستضافة أولاً.

متى تحتاج إلى تمكين xmlrpc.php؟

قد تكون هناك بعض المناسبات التي تحتاج فيها إلى تمكين xmlrpc.php على موقع WordPress الخاص بك أو عندما لا يجب عليك تعطيله تمامًا.

هؤلاء هم:

  • أنت لا تقوم بتشغيل واجهة برمجة تطبيقات REST (لا يُنصح بذلك ، ولكنها ضرورية في بعض المواقف) ولكنك تحتاج إلى التواصل بين موقع WordPress الخاص بك والأنظمة الأخرى.
  • لا يمكنك تحديث WordPress إلى الإصدار 4.4 أو أعلى ، لذلك لا يمكنك الوصول إلى REST API. قد يكون هذا بسبب قيود في إعداد الاستضافة (في هذه الحالة سأغير مزود الاستضافة) أو عدم توافق السمة أو المكونات الإضافية (في هذه الحالة سأستبدلها أو أقوم بتحديثها).
  • أنت تعمل مع تطبيق خارجي لا يمكنه الوصول إلى WP REST API ولكن يمكنه الوصول إلى XML-RPC (على المدى الطويل ، أنصح بتحديث هذا التطبيق أو التبديل إلى تطبيق متوافق مع REST).

هذا هو! لا يُعد أي من هذه الأسباب وجيهة بشكل خاص للاحتفاظ بمواصفات XML-RPC قيد التشغيل.

السبب الوحيد الذي يجعله لا يزال في WordPress هو التوافق مع الإصدارات السابقة ولا تستخدمه إلا إذا كنت تعمل مع أنظمة قديمة. بالنسبة لأي شخص يرغب في تحديث مواقعه باستمرار والعمل بأحدث التقنيات ، فإن تعطيل xmlrpc.php هو السبيل للذهاب.

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

ملخص

تم تطوير مواصفات XML-RPC قبل إنشاء WordPress ، كوسيلة لـ WordPress للتواصل مع الأنظمة والتطبيقات الخارجية. يحتوي على عيوب أمنية متأصلة ويمكن أن يجعل موقعك عرضة للهجوم.

الآن بعد أن سمحت واجهة برمجة تطبيقات REST لموقعك بالاتصال بالتطبيقات الأخرى ، يمكنك تعطيل xmlrpc.php بأمان. إذا اتبعت الخطوات المذكورة أعلاه ، فإن تعطيلها سيؤدي إلى تحسين أمان موقعك.