משתמשים רדומים בוורדפרס: ניקוי בטוח ומדיניות מונעת

חשבונות subscriber שלא נכנסו שנים הם וקטור התקפה. כך מזהים, מסיימים בבטחה ומגדירים מדיניות אוטומטית.

חשבון subscriber שנרשם לפני שלוש שנים, סיסמתו לא הוחלפה, המייל שלו כבר לא בשימוש - הוא לא פעיל אבל הוא קיים. כשמבט מחדש מהזווית האבטחתית, הוא וקטור התקפה: סיסמתו עלולה להופיע בהדלפת credentials של אתר אחר, ובאמצעות credential stuffing תוקף יוכל להיכנס לאתר שלך תחת זהות "חוקית".

למה זה משנה

בוטים שעוברים על המון אתרי וורדפרס מנסים לוגין אוטומטי עם רשימות סיסמאות שדלפו (rockyou.txt, COMB וכדומה). אם משתמש subscriber במערכת שלך השתמש לפני שש שנים בסיסמה password123 שמופיעה ברשימה כזו, הבוט יצליח להיכנס. ברמת subscriber לבדה אין הרבה מה לעשות, אבל: (1) חלק מתוספי privilege escalation מאפשרים למשתמש subscriber מאומת לשנות את הרול של עצמו דרך AJAX endpoint לא בטוח (פגיעות שראינו ב-פרצות אבטחה ידועות ועוד); (2) חשבון מאומת מקבל גישה ל-wp-admin חלקי, ל-REST API מאומת ול-?author= enumeration; (3) פעילות חשודה של חשבון subscriber מטעה את צוות האבטחה - היא נראית "מהמשתמש עצמו" ולא מהתקפה. ניקוי חשבונות רדומים לא רק מקטין את ה-attack surface אלא גם מצמצם רעש בלוגים.

איך לזהות

וורדפרס לא שומר נטיב את last_login - תוסף שמירה הוא הכרחי. אפשרויות:

  • התקן WP Last Login או Simple History שיתחילו לשמור מהיום.
  • הסתכל על user_registered מ-wp_users ועל פעילות user_activity אם יש meta כזה.
  • הרץ דרך WP-CLI:
    wp user list --role=subscriber --field=ID,user_login,user_registered --orderby=user_registered

הסריקה של RankPlus מזהה משתמשים ללא פעילות לפי registered_date מעל 365 יום, ללא תגובות, ללא פוסטים, ללא post_meta המקושר אליהם.

איך לתקן

  1. התקן את התוסף החינמי Inactive User Deleter או WP Inactive User Cleanup.
  2. הגדר קריטריונים בטוחים: 365 ימים ללא login, רק תפקיד subscriber, בלי פוסטים, תגובות או הזמנות WooCommerce.
  3. הפעל dry-run / preview תחילה - תקבל רשימה של החשבונות שעומדים להימחק. עבור עליה ידנית.
  4. במחיקה ב-WordPress (Bulk actions > Delete) תופיע אופציה Attribute all content to. בחר את משתמש האדמין הראשי - חשוב כי גם תגובה, גם פוסט, גם שדה ACF שמקושר ל-user_id יישבר אם המשתמש פשוט נעלם.
  5. חלופה ידנית מ-WP-CLI:
    wp user delete 123 --reassign=1
    זה מוחק את user 123 ומעביר את התוכן שלו ל-user 1.
  6. אחרי הניקוי, סגור את הדלת: Settings > General > Membership - בטל את "Anyone can register" אם הרשמה פתוחה אינה נחוצה לאתר.

טעויות נפוצות

  • מחיקה גורפת בלי בדיקה: לקוח אמיתי שלא ביקר באתר שנה ימחק - והוא היה חוזר עם כסף.
  • מחיקת editor או author: יש להם פוסטים. אם תמחק בלי reassign, הפוסטים יישברו.
  • התעלמות מ-WooCommerce: customer ישן עם הזמנות עבר אינו "רדום" - יש לו היסטוריית רכישות. סנן לפי הזמנות.
  • אי בדיקת רגולציה: באתרי תקנות מסוימים יש חובת שמירת רשומות תקופה מינימלית. במקרה זה השבת את החשבון (עם תוסף Disable Users) במקום למחוק.

בדיקה לאחר תיקון

הרץ wp user list --role=subscriber --format=count והשווה למספר לפני הניקוי. ב-RankPlus הסטטוס יחזור לירוק. בדוק שהאתר עדיין עובד: התחבר עם משתמש subscriber קיים, פתח דף, ושתגובה אחרונה עדיין מקושרת לבעליה.

טיפ: בנוסף לניקוי חד-פעמי, הגדר משימת cron שבועית עם WP-CLI: wp user list --role=subscriber --orderby=user_registered --format=ids | head שתשלח אליך מייל אחרי שנה של חוסר פעילות - זה הופך את הניקוי לאוטומטי. שיטה משלימה: שלח מייל אוטומטי ל-subscribers שלא נכנסו 6 חודשים עם בקשה לאישור שהחשבון עדיין רלוונטי. רק אם הם לא מגיבים תוך 30 יום, מוחקים. זה מצמצם את הסיכון למחיקת לקוח אמיתי, מאפשר "קמפיין win-back" שלעיתים מחזיר חלק מהמשתמשים, ומספק רישום של תהליך מחיקה מסודר אם אתה נדרש להראות compliance ל-תקנות הגנת מידע או לרגולציה אחרת. כלי כמו תוסף Email Logger יכול לתעד את שליחת המייל וקבלת התגובה.