WordPress מאפשר עריכת קבצי תבנית ותוסף ישירות מלוח הבקרה דרך 'Appearance > Theme File Editor' ו-'Plugins > Plugin File Editor'. בנקודת מבט אבטחתית זוהי קטסטרופה שלא רק שאינה הכרחית, אלא שאף מפתח רציני לא משתמש בה.
למה זה משנה
תוקף שמצליח להשיג גישה לחשבון אדמין יחיד יכול להזריק קוד PHP זדוני לכל קובץ בתבנית או בתוסף בלחיצת כפתור, בלי לגעת בשרת. הוא לא צריך FTP, לא צריך SSH, לא צריך להעלות shell - הוא פשוט פותח את functions.php דרך הדפדפן ומדביק backdoor. תהליך התקיפה נמשך 30 שניות. עם העורך כבוי, אותו תוקף נדרש לקבל גם פרטי FTP/SFTP, מה שקורה בערך פי עשרה פחות (סיסמת FTP נשמרת לרוב רק במכשיר המפתח, לא במאגרי credential stuffing). זוהי אחת ההמלצות הראשונות בכל מדריך hardening רשמי של WordPress.org. גם תוסף שנפרץ (zero-day) עלול להפעיל את העורך בשמך - יש מקרים מתועדים של תוספים שיצרו 'תוסף שלישי' באמצעות העורך כדי להישאר באתר אחרי שהתוסף המקורי הוסר.
איך לזהות
הבדיקה קוראת את wp-config.php ומחפשת את הקבוע DISALLOW_FILE_EDIT. אם הוא לא מוגדר או מוגדר ל-false - הבדיקה אדומה. ידנית: גש ל-Appearance > Theme File Editor או Plugins > Plugin File Editor. אם הקישור מופיע בתפריט - העורך פעיל. אם נעלם - העורך כבוי. הבדיקה גם בודקת את DISALLOW_FILE_MODS שמכבה גם התקנת תוספים, אבל זו הגדרה אגרסיבית מדי לרוב האתרים.
איך לתקן
- פתח את wp-config.php דרך FTP/SFTP, File Manager של ספק האחסון, או SSH.
- לפני השורה /* That's all, stop editing! */ הוסף:
define('DISALLOW_FILE_EDIT', true); - אם השורה כבר קיימת, ודא שהערך הוא true ולא false.
- שמור את הקובץ.
- היכנס ללוח הבקרה ובדוק: התפריט תחת Appearance ו-Plugins אמור להציג את כל האפשרויות חוץ מ-'Theme File Editor' ו-'Plugin File Editor' - אלה אמורים להיעלם.
- אם אתה רוצה הקשחה נוספת ולעולם לא תתקין/תעדכן תוספים דרך הדשבורד:
זה גם מכבה את החנות תוספים והעדכונים האוטומטיים. השתמש בזה רק עם תהליך deploy חיצוני (Composer + WP-CLI).define('DISALLOW_FILE_MODS', true); - לעדכון קוד בעתיד: השתמש ב-SFTP, IDE מקומי + פריסה, או WP-CLI.
טעויות נפוצות
אל תפעיל DISALLOW_FILE_MODS אם אתה מעדכן תוספים דרך הדשבורד - אתה תיתקע. אל תחשוב 'אני האדמין היחיד, זה לא מסוכן' - אם הסיסמה שלך תדלוף, התוקף יעשה את אותו דבר שאתה היית עושה. אל תסיר את ההגדרה 'באופן זמני' לעריכה אחת - אם אתה צריך לערוך, השתמש ב-SFTP. אל תניח שהאחסון 'כבר כיבה את זה אוטומטית' - חלק מהאחסונים המנוהלים (Kinsta, WP Engine) עושים זאת, אבל הרוב לא.
בדיקה לאחר תיקון
הרץ שוב את האודיט. ידנית: לוח הבקרה > Appearance - לא אמור להופיע 'Theme File Editor'. Plugins - לא אמור להופיע 'Plugin File Editor'. אם הם עדיין שם, ודא ששמרת את wp-config.php באותו עותק שהשרת קורא (לא עותק staging) ושאין caching של PHP opcode (סיכוי נמוך).
שיקולים נוספים
במקום להשתמש בעורך הקבצים, מפתחים מנוסים עובדים עם code snippets plugin (כמו 'Code Snippets' של Code Snippets Pro) - תוסף שמאפשר להוסיף קטעי PHP ל-functions.php באופן בטוח, עם בקרת syntax לפני שמירה והפעלה. זה מקבל את היתרון של עריכה דרך הדפדפן בלי הסיכון שעורך הקבצים מוסיף, כי snippets שגויים פשוט לא נשמרים, במקום לרסק את האתר. בנוסף, snippets מנוהלים, אפשר להפעיל ולכבות, ויש לוג מי שינה מה.
קישורים לבדיקות קשורות
- שלמות קבצי הליבה - מזהה שינויים בקבצי ליבה שייתכן שנעשו דרך עורך הקבצים.
- הרשאות wp-config - השכבה הבאה: גם אם הצליחו להיכנס, הם לא יקראו את הסיסמה.
- אדמינים שנוצרו לאחרונה - מתריע על תוצאת לוואי אופיינית של עורך פתוח.