הגנה מתקדמת לאתרי WooCommerce: חסימת התחברות אדמין דרך /my-account
ניסיונות הפריצה לאתרי וורדפרס בכלל ולאתרים מבוססי ווקומרס בפרט מתגברים מאוד בשנים האחרונות והולכים ונהיים מתוחכמים. אחד מהכלים החשובים להתגוננות הוא שינוי כתובת ההתחברות הדיפולטיבית של וורדפרס. במקום להשתמש בכתובת המוכרת /wp-admin
, שינוי ה־URL לכתובת מותאמת אישית מקטין דרמטית את כמות ניסיונות ההתחברות, מפחית עומס על השרת, ומסייע להרחיק תוקפים גם כאשר פרטי ההתחברות דלפו או נפרצו.
אבל מה עושים כשהאתר מבוסס WooCommerce, ושם קיימת תמיד האפשרות להתחבר דרך עמוד /my-account
? הרי את הכתובת הזו אי אפשר לשנות בקלות, והיא משמשת את כל לקוחות החנות. שינוי מבנה הקישורים עלול לפגוע בתפקוד האתר ובחוויית המשתמש.
מה לגבי האקרים שכן הצליחו להשיג את פרטי הגישה של משתמש אדמין?
אם מתקפת פישינג או דליפה חיצונית הביאה לחשיפת פרטי משתמש עם הרשאות ניהול, כל תוקף יכול להכניס את הפרטים בטופס ההתחברות של /my-account
ולהיכנס כ־Admin – בלי לעבור דרך /wp-admin
בכלל.
לכן – הסניפט הבא הוא קריטי.
הוא מונע התחברות של משתמשים בעלי הרשאת Administrator דרך טופס ההתחברות של WooCommerce, כלומר דרך /my-account
.
הסניפט הבסיסי – חסימת התחברות אדמין דרך WooCommerce
הוסיפו את הקוד הבא ל־functions.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 מסוים. כך גם אם פרטי ההתחברות דלפו, לא ניתן יהיה לנצל אותם.
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 הם מטרה מועדפת לתוקפים. שינוי כתובת ההתחברות הוא רק צעד ראשון. חשוב לא פחות – לחסום את כל הפתחים החלופיים להתחברות, במיוחד למשתמשים עם הרשאות ניהול.
הטמיעו את אחד הקודים שלעיל – והגנו על אתרכם טוב יותר.