הבלוג של שקוף מדיה

סניפט קוד: מניעת גישת מנהל דרך קישור התחברות לפאנל MY-ACCOUNT של WOOCOMMERCE

הגנה מתקדמת לאתרי WooCommerce: חסימת התחברות אדמין דרך /my-account

ניסיונות הפריצה לאתרי וורדפרס בכלל ולאתרים מבוססי ווקומרס בפרט מתגברים מאוד בשנים האחרונות והולכים ונהיים מתוחכמים. אחד מהכלים החשובים להתגוננות הוא שינוי כתובת ההתחברות הדיפולטיבית של וורדפרס. במקום להשתמש בכתובת המוכרת /wp-admin, שינוי ה־URL לכתובת מותאמת אישית מקטין דרמטית את כמות ניסיונות ההתחברות, מפחית עומס על השרת, ומסייע להרחיק תוקפים גם כאשר פרטי ההתחברות דלפו או נפרצו.

אבל מה עושים כשהאתר מבוסס WooCommerce, ושם קיימת תמיד האפשרות להתחבר דרך עמוד /my-account? הרי את הכתובת הזו אי אפשר לשנות בקלות, והיא משמשת את כל לקוחות החנות. שינוי מבנה הקישורים עלול לפגוע בתפקוד האתר ובחוויית המשתמש.

מה לגבי האקרים שכן הצליחו להשיג את פרטי הגישה של משתמש אדמין?

אם מתקפת פישינג או דליפה חיצונית הביאה לחשיפת פרטי משתמש עם הרשאות ניהול, כל תוקף יכול להכניס את הפרטים בטופס ההתחברות של /my-account ולהיכנס כ־Admin – בלי לעבור דרך /wp-admin בכלל.

לכן – הסניפט הבא הוא קריטי.
הוא מונע התחברות של משתמשים בעלי הרשאת Administrator דרך טופס ההתחברות של WooCommerce, כלומר דרך /my-account.

הסניפט הבסיסי – חסימת התחברות אדמין דרך WooCommerce

הוסיפו את הקוד הבא ל־functions.php של ערכת העיצוב הפעילה באתר (או בתבנית הבת):

php


add_filter( 'woocommerce_login_redirect', 'shakuf_block_admin_login_from_wc', 10, 2 );
add_action( 'wp_login', 'shakuf_prevent_admin_login_via_wc', 10, 2 );

function shakuf_prevent_admin_login_via_wc( $user_login, $user ) {
    if ( is_admin() || !defined('WOOCOMMERCE_VERSION') ) return;

    if ( in_array( 'administrator', (array) $user->roles ) ) {
        wp_logout();
        wp_redirect( home_url() ); // מעביר לעמוד הבית – ניתן לשנות לכתובת אחרת
        exit;
    }
}
    

מה הקוד הזה עושה בפועל?

  • אם המשתמש שמנסה להתחבר הוא בעל הרשאות administrator
  • ואם הוא עושה זאת לא דרך wp-admin אלא דרך עמוד רגיל (כמו /my-account)
  • הוא ינותק מיד ויופנה לעמוד הבית או לכתובת לבחירתכם

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

פרקטיקה מתקדמת – הגבלת התחברות לפי כתובת IP

אם ברצונכם להחמיר את רמת האבטחה, ניתן להרחיק לכת עוד יותר ולאפשר התחברות של משתמשי Admin אך ורק ממיקומים ספציפיים – למשל, מהמשרד, דרך VPN או מ־IP מסוים. כך גם אם פרטי ההתחברות דלפו, לא ניתן יהיה לנצל אותם.

php


function shakuf_block_admin_login_from_wc( $redirect, $user ) {
    if ( in_array( 'administrator', (array) $user->roles ) ) {
        $allowed_ip = '123.123.123.123'; // כתובת ה-IP המורשית
        if ( $_SERVER['REMOTE_ADDR'] !== $allowed_ip ) {
            wp_logout();
            wp_die('גישה חסומה – התחברות מנהל מכתובת לא מאושרת.');
        }
    }
    return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'shakuf_block_admin_login_from_wc', 10, 2 );
    

באמצעות קוד זה, גם אם מישהו מחזיק בשם משתמש וסיסמה של מנהל – לא תהיה לו אפשרות להתחבר ממחשב זר שאינו באותו IP מורשה.

לסיכום

אתרי WordPress מבוססי WooCommerce הם מטרה מועדפת לתוקפים. שינוי כתובת ההתחברות הוא רק צעד ראשון. חשוב לא פחות – לחסום את כל הפתחים החלופיים להתחברות, במיוחד למשתמשים עם הרשאות ניהול.

הטמיעו את אחד הקודים שלעיל – והגנו על אתרכם טוב יותר.

תגיות בכתבה: 

שאלות? התקשרו אלינו או

השאירו פרטים ונשמח לעזור

לקוחותינו היקרים