כל התקנה של וורדפרס מגיעה עם קובץ בשם xmlrpc.php בתיקיית השורש של האתר, מופעל כברירת מחדל. אם הצצתם אי פעם בלוגים של השרת, סביר להניח שראיתם אותו מנוצל לרעה.
מדובר בנקודת קצה ישנה מסוג Remote Procedure Call שהוצגה עוד לפני שה-REST API של וורדפרס היה קיים. בזמנו, זו הייתה הדרך היחידה בה אפליקציות חיצוניות יכלו לתקשר עם וורדפרס. כיום ה-REST API מכסה את כל אותם מקרי שימוש, עם אימות טוב יותר והגבלת קצב בקשות.
אלא אם יש לכם סיבה ספציפית להשאיר את xmlrpc.php פעיל – עליכם לבטל אותו.
למה xmlrpc.php מהווה סיכון אבטחה
המימוש של XML-RPC בוורדפרס לא כולל הגבלת קצב בקשות ולא מנגנון נעילה. שלושה וקטורי תקיפה מנצלים את זה:
הגברת מתקפות Brute-force: המתודה system.multicall מאפשרת לתוקף לארוז מאות ניסיונות התחברות בבקשת HTTP אחת. תוספי אבטחה שעוקבים אחר /wp-login.php לא רואים אותם כלל.
המתודה system.multicall מאפשרת ביצוע מספר קריאות בבקשה אחת. תוקף יכול להשתמש בה כדי לנסות מאות סיסמאות בבת אחת, כשבלוגים של השרת מופיעה רק בקשת HTTP בודדת. – Perishable Press, "Protect Against WordPress Brute Force Amplification Attack"
הגברת מתקפות DDoS: תוקפים שולחים בקשות Pingback מזויפות דרך האתר שלכם בכדי להציף את השרת של הקורבן בתעבורה. אלפי אתרי וורדפרס הופכים (בלי לדעת) למקורות תעבורה זדונית.
חשיפת כתובת ה-IP המקורית: בקשות Pingback מבוצעות בצד השרת ועוקפות שירותי CDN כמו Cloudflare. כלומר, כתובת ה-IP האמיתית של השרת שלכם נחשפת – גם כאשר Security Headers והגנת Proxy מוגדרים כהלכה.
כיצד לבטל את xmlrpc.php
הנה שלוש שיטות – בחרו את המתאימה לתצורת האחסון שלכם.
אפשרות א': חסימה ברמת השרת (מומלץ)
הבקשות לא מגיעות ל-PHP כלל, ולכן זו הגישה היעילה ביותר.
Apache – הוסיפו לקובץ .htaccess:
<Files "xmlrpc.php">
Require all denied
</Files>Nginx – הוסיפו לבלוק ה-server ובצעו reload:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}אפשרות ב': ביטול באמצעות Must-Use Plugin
אם אין לכם גישה לעריכת הגדרות השרת (מצב נפוץ באחסון שיתופי), צרו את הקובץ wp-content/mu-plugins/disable-xmlrpc.php:
<?php
add_filter( 'xmlrpc_methods', '__return_empty_array' );
remove_action( 'wp_head', 'rsd_link' );הפילטר xmlrpc_enabled שמופיע במדריכים רבים חוסם רק מתודות שדורשות אימות. מתודות כמו Pingbacks ו-system.listMethods ממשיכות לעבוד, ולכן עליכם להשתמש ב-xmlrpc_methods במקום.
אפשרות ג': חסימה באמצעות תוסף אבטחה
תוספים כמו Wordfence, Sucuri ו-iThemes Security כוללים אפשרות לביטול XML-RPC. בדקו בהגדרות ה-Firewall של התוסף שלכם לפני שאתם מוסיפים חוקים ידניים.
| שיטה | רמה | עוצר PHP | מתאים ל |
|---|---|---|---|
| חוק .htaccess / Nginx | שרת | כן | VPS, שרת ייעודי, אחסון מנוהל |
MU-plugin (xmlrpc_methods) | PHP | לא | אחסון שיתופי |
| תוסף אבטחה | PHP | לא | אתרים שכבר מריצים תוסף אבטחה |
מה נשבר כשמבטלים את הקובץ
ברוב האתרים – כלום. החריגים העיקריים:
- Jetpack מסתמך על XML-RPC בכדי להתחבר ל-WordPress.com. אם אתם משתמשים ב-Jetpack, השאירו את XML-RPC פעיל או הוסיפו את טווחי ה-IP של Jetpack לרשימה הלבנה. (Jetpack משתמש באימות מבוסס טוקנים, כך שהוא בטוח יותר מ-XML-RPC רגיל.)
- אפליקציית וורדפרס לניידים – שיטות חיבור ישנות משתמשות ב-XML-RPC, אך הגרסאות החדשות של האפליקציה כבר עוברות ל-REST API כברירת מחדל.
- Pingbacks ו-Trackbacks מפסיקים לעבוד, וזה דווקא יתרון מכיוון שהם ממילא מנוצלים כמעט אך ורק לספאם.
כיצד לוודא שהביטול עובד
הריצו בדיקה מהירה מהטרמינל:
curl -s -o /dev/null -w "%{http_code}" https://yourdomain.com/xmlrpc.phpתגובת 403 מעידה שהחסימה ברמת השרת פעילה. אם השתמשתם בפילטר PHP, שלחו קריאת בדיקה במקום:
curl -X POST https://yourdomain.com/xmlrpc.php
-H "Content-Type: text/xml"
-d '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName></methodCall>'מערך מתודות ריק בתגובה מאשר שהפילטר xmlrpc_methods פעיל.
שאלות נפוצות
שאלות נפוצות לגבי ביטול XML-RPC בוורדפרס:
xmlrpc.php עדיין מופעל כברירת מחדל בכל התקנה חדשה. ליבת וורדפרס לא הסירה או ביטלה אותו, למרות שה-REST API החליף את הפונקציונליות שלו עוד מגרסה 4.7.xmlrpc_enabled חוסם רק מתודות שדורשות אימות, כמו פרסום פוסטים או העלאת מדיה. מתודות שלא דורשות אימות כמו pingback.ping ו-system.listMethods ממשיכות לעבוד. הפילטר xmlrpc_methods, כשמחזיר מערך ריק, משבית את כל המתודות כולל אלו שלא דורשות אימות.xmlrpc.php לחלוטין ברמת השרת. Jetpack משתמש ב-XML-RPC כדי לתקשר עם WordPress.com. עם זאת, המימוש של Jetpack משתמש באימות מבוסס טוקנים ולא בפרטי התחברות רגילים, מה שהופך אותו לבטוח יותר מ-XML-RPC סטנדרטי. אם אתם מריצים Jetpack, השאירו את XML-RPC פעיל או הוסיפו את טווחי ה-IP של Jetpack לרשימה הלבנה בהגדרות השרת.xmlrpc.php סוגר את וקטור הגברת מתקפות ה-Brute-force, אך תוקפים עדיין יכולים לכוון ל-/wp-login.php ולנקודות אימות של ה-REST API. שלבו את ביטול XML-RPC עם אימות דו-שלבי (2FA), הגבלת ניסיונות התחברות וסיסמאות חזקות להגנה מלאה.xmlrpc.php לא מומלצת מכיוון שעדכוני ליבה של וורדפרס ישחזרו אותו. במקום זאת, חסמו גישה ברמת השרת או השביתו את המתודות באמצעות פילטר PHP. גישות אלו שורדות עדכוני ליבה ולא משנות קבצי ליבה של וורדפרס./xmlrpc.php. ב-Apache, הריצו grep xmlrpc.php /var/log/apache2/access.log | wc -l. ב-Nginx, בדקו את /var/log/nginx/access.log. מספר גבוה של בקשות POST, במיוחד מכתובות IP שונות, מעיד על ניסיונות Brute-force או הגברת DDoS.לסיכום
לרוב אתרי הוורדפרס אין שום סיבה להשאיר את xmlrpc.php פעיל. חסמו אותו ברמת השרת אם יש לכם אפשרות, או השתמשו בפילטר xmlrpc_methods אם לא. וודאו עם curl והמשיכו הלאה.
רוצים לחזק עוד יותר את אבטחת האתר? עיינו במדריך חיזוק אבטחה באתרי וורדפרס.

