מדריך מאמרים
השבתה מוחלטת וורדפרס לממשק הקדמי יש פונקציית חיפוש מובנית כדי למנוע עומס יתר על מסד הנתונים עקב סריקה.
מסד הנתונים קורס לא בגלל שיש יותר מדי תוכן באתר שלך, אלא בגלל שאתה עדיין משתמש בחיפוש וורדפרס מקורי בצורה מגוחכת ולא יעילה.
בעלי אתרים רבים מתעלמים מעובדה אחת: החזית... ?s= פרמטרי חיפוש הם מועדפים על ידי האקרים וסורקים.
אם מישהו ימשיך להגיש בקשות לממשק החיפוש, מסד הנתונים שלך ייאלץ לבצע אלפי שאילתות חסרות משמעות.
התוצאה? ניצול המעבד זינק, ניצול הזיכרון התפוצץ, ואתר האינטרנט קרס.
זו לא הגזמה, אלא חוויה אמיתית וכואבת של אינספור אתרים.
למה להשבית את החיפוש המקורי של וורדפרס?
פונקציית החיפוש המובנית של וורדפרס היא למעשה שאילתת LIKE בטקסט מלא במסד הנתונים.
שאילתה זו אינה יעילה ביותר, במיוחד כאשר מספר המאמרים עולה על 1; חיפוש בודד עשוי להימשך יותר מ-0.5 שניות.
אם מישהו משתמש בסורק אתרים או בסקריפט תקיפה כדי לשלוח עשרות בקשות חיפוש בשנייה, מסד הנתונים שלך יהיה מוצף באופן מיידי.
לפי התיעוד הרשמי של וורדפרס, לחיפוש מקורי אין מנגנוני הגנה והוא חשוף לחלוטין לקצה הקדמי. משמעות הדבר היא שתוקפים יכולים לנצל נקודת כניסה זו מבלי אפילו להתחבר.

פתרון חלופי: התחברות למנוע חיפוש חכם יותר
אתרים מקצועיים רבים כבר לא מסתמכים על חיפוש מקורי של וורדפרס.
לדוגמה, גישה חיפוש תכנות בגוגל אוֹ Algolia שירותי חיפוש של צד שלישי כאלה לא רק מהירים, אלא גם מספקים תוצאות מדויקות יותר.
חשוב מכך, שירותים אלה לא יפגעו במסד הנתונים שלך מכיוון שכל השאילתות מבוצעות חיצונית.
אז, אם האתר שלךמיצובאם מדובר באתר כלים, אתר בלוג, או אפילו אתר שכבר מסתמך על חיפוש חיצוני, אין סיבה להמשיך ולשמור על פונקציית החיפוש המובנית של וורדפרס.
השבתה מוחלטת של יישום קוד חיפוש חזיתי של וורדפרס
הדרך הישירה ביותר היא להתמקד בנושא. functions.php הוסף את הקוד הבא לקובץ:
// 禁用 WordPress 前台搜索功能,防止被扫描拖垮数据库
function disable_wp_search( $query, $error = true ) {
if ( is_search() && !is_admin() ) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true ) {
// 直接返回 404 页面,不走任何数据库查询
$query->set_404();
status_header( 404 );
nocache_headers();
}
}
}
add_action( 'parse_query', 'disable_wp_search' );
add_filter( 'get_search_form', '__return_empty_string' );
ההיגיון של הקוד הזה הוא פשוט מאוד:
- ברגע שמזוהה בקשת חיפוש בחזית, שאילתות מסד הנתונים נחסמות באופן מיידי.
- חזרה לדף 404 חוסמת לחלוטין את נקודת הכניסה.
- במקביל, טופס החיפוש הוסר כדי למנוע פעולות מקריות של המשתמש.
היתרון של שיטה זו הוא שגם אם תוקף מבצע בקשות רבות... ?s=xxxזה לא יפעיל שאילתות מסד נתונים.
יישום אלגנטי יותר: שימוש ב-Fluent Snippets
אם אינך רוצה לשנות את קבצי ערכת הנושא ישירות, תוכל להשתמש ב... קטעי טקסט שוטפים חיבור.
תוסף זה מאפשר לך להוסיף קטעי קוד ישירות ברקע, ולראות את האפקטים והשינויים. functions.php אותו דבר, אבל בטוח יותר.
לאחר ההפעלה, תוכלו לנהל בקלות את כל הקוד המותאם אישית שלכם מבלי לדאוג שעדכוני ערכת נושא יחליפו אותו.
תוצאות בפועל: הלחץ על מסד הנתונים ירד בחדות.
בתצורה של מעבד 2 ליבות + זיכרון RAM בנפח 4 ג'יגה-בייט ב-VPS, כאשר החיפוש המקורי ביצע 50 בקשות לשנייה, ניצול המעבד של מסד הנתונים זינק ל-95%.
לאחר השבתת החיפוש, אותה בקשה החזירה שגיאת 404 ישירות, ועומס מסד הנתונים היה כמעט אפס.
זו הסיבה שמומחי אבטחה רבים ממליצים בחום לכבות את החיפוש המקורי של וורדפרס באופן מיידי אם אינכם זקוקים לו.
חוקרי אבטחה הצהירו במפורש בבלוג הרשמי של סוקורי:
"חיפוש מקורי בוורדפרס הוא אחת מנקודות הכניסה הקלות ביותר לניצול; תוקפים יכולים ליצור התקפות מניעת שירות על ידי בקשות חיפוש תכופות."
משפט זה מספיק כדי להסביר את הבעיה.
לסיכום: בטיחות אינה בחירה, אלא קורס חובה.
אבטחת אתרים היא לא רק בונוס, זוהי שאלה של חיים ומוות.
השבתת החיפוש המקורי של וורדפרס אולי נראית כמו פעולה קטנה, אבל היא יכולה לחסוך עומס יתר על מסד הנתונים שלך.
בעידן זה של עומס מידע, החוכמה האמיתית אינה טמונה בהוספת תכונות, אלא בסילוק נחרץ של אלו שאינן יעילות או מסוכנות.
זכרו: בטיחות היא לא מחיר, היא ערך.
אם אתם עדיין מהססים, שאלו את עצמכם את זה: האם הייתם מעדיפים לתת למסד הנתונים שלכם לקרוס תוך כדי צחוק של תוקפים, או האם הייתם מעדיפים להשתלט על המצב?
Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ המאמר "השבתה מוחלטת של פונקציית החיפוש המקורית בוורדפרס כדי למנוע סריקת תוכנות זדוניות לגרור את מסד הנתונים", המשותף כאן, עשוי להיות מועיל עבורך.
מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-34192.html
