ไดเรกทอรีบทความ
ปิดใช้งานโดยสมบูรณ์ WordPress ส่วนหน้าของเว็บไซต์มีฟังก์ชันการค้นหาในตัวเพื่อป้องกันไม่ให้ฐานข้อมูลถูกประมวลผลมากเกินไปจากการสแกน
ฐานข้อมูลล่มไม่ใช่เพราะเว็บไซต์ของคุณมีเนื้อหามากเกินไป แต่เป็นเพราะคุณยังคงใช้ระบบค้นหาของ WordPress ที่ไม่มีประสิทธิภาพอย่างมากอยู่
เจ้าของเว็บไซต์หลายคนมองข้ามข้อเท็จจริงข้อหนึ่งไป นั่นคือ ส่วนหน้าของเว็บไซต์... ?s= พารามิเตอร์การค้นหาเป็นสิ่งที่แฮกเกอร์และโปรแกรมสแกนชื่นชอบเป็นพิเศษ
หากมีคนส่งคำขอไปยังหน้าค้นหาอย่างต่อเนื่อง ฐานข้อมูลของคุณจะถูกบังคับให้ประมวลผลคำสั่งค้นหาที่ไร้ประโยชน์นับพันครั้ง
ผลที่ตามมาคือ การใช้งาน CPU พุ่งสูงขึ้น การใช้งานหน่วยความจำเพิ่มขึ้นอย่างมาก และเว็บไซต์ล่ม
นี่ไม่ใช่การพูดเกินจริง แต่เป็นประสบการณ์จริงที่เจ็บปวดจากเว็บไซต์นับไม่ถ้วน
เหตุใดจึงต้องปิดใช้งานการค้นหาในตัวของ WordPress?
ฟังก์ชันการค้นหาในตัวของ WordPress นั้นโดยพื้นฐานแล้วคือการค้นหาข้อความเต็มรูปแบบด้วยคำว่า "LIKE" ในฐานข้อมูล
วิธีการค้นหานี้ไม่มีประสิทธิภาพอย่างยิ่ง โดยเฉพาะอย่างยิ่งเมื่อจำนวนบทความเกิน 1 บทความ การค้นหาเพียงครั้งเดียวอาจใช้เวลานานกว่า 0.5 วินาที
หากมีคนใช้โปรแกรมรวบรวมข้อมูลบนเว็บหรือสคริปต์โจมตีเพื่อส่งคำขอค้นหาหลายสิบรายการต่อวินาที ฐานข้อมูลของคุณจะรับมือไม่ไหวในทันที
ตามเอกสารอย่างเป็นทางการของ WordPress การค้นหาแบบเนทีฟไม่มีกลไกการป้องกันใด ๆ และเปิดเผยต่อส่วนหน้าอย่างสมบูรณ์ ซึ่งหมายความว่าผู้โจมตีสามารถใช้ประโยชน์จากจุดเข้าโจมตีนี้ได้โดยไม่ต้องล็อกอินด้วยซ้ำ

ทางเลือกอื่น: เชื่อมต่อกับเครื่องมือค้นหาที่ชาญฉลาดกว่า
เว็บไซต์ระดับมืออาชีพหลายแห่งเลิกใช้ระบบค้นหาในตัวของ WordPress แล้ว
ตัวอย่างเช่น การเข้าถึง การค้นหาการเขียนโปรแกรมของ Google หรือ Algolia บริการค้นหาจากภายนอกเหล่านี้ไม่เพียงแต่รวดเร็วเท่านั้น แต่ยังให้ผลลัพธ์ที่แม่นยำกว่าอีกด้วย
ที่สำคัญกว่านั้น บริการเหล่านี้จะไม่ทำให้ฐานข้อมูลของคุณเสียหาย เพราะการสืบค้นข้อมูลทั้งหมดจะดำเนินการจากภายนอก
ดังนั้น หากเว็บไซต์ของคุณการวางตำแหน่งหากเป็นเว็บไซต์เครื่องมือ เว็บไซต์บล็อก หรือแม้แต่เว็บไซต์ที่พึ่งพาการค้นหาภายนอกอยู่แล้ว ก็ไม่มีเหตุผลที่จะต้องคงฟังก์ชันการค้นหาในตัวของ WordPress ไว้อีกต่อไป
ปิดใช้งานการทำงานของโค้ดค้นหาด้านหน้าของ WordPress อย่างสมบูรณ์
วิธีที่ตรงที่สุดคือการมุ่งเน้นไปที่หัวข้อหลัก 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 คอร์ + แรม 4GB บน VPS เมื่อการค้นหาแบบเนทีฟส่งคำขอ 50 ครั้งต่อวินาที การใช้งาน CPU ของฐานข้อมูลพุ่งสูงถึง 95%
หลังจากปิดใช้งานการค้นหา คำขอเดียวกันนั้นกลับแสดงข้อผิดพลาด 404 โดยตรง และการโหลดฐานข้อมูลก็แทบเป็นศูนย์
ด้วยเหตุนี้ ผู้เชี่ยวชาญด้านความปลอดภัยหลายคนจึงแนะนำอย่างยิ่งให้ปิดใช้งานฟังก์ชันการค้นหาในตัวของ WordPress ทันที หากคุณไม่ต้องการใช้งาน
นักวิจัยด้านความปลอดภัยได้ระบุไว้อย่างชัดเจนในบล็อกอย่างเป็นทางการของ Sucuri ว่า:
"ระบบค้นหาในตัวของ WordPress เป็นหนึ่งในจุดอ่อนที่ง่ายที่สุดสำหรับผู้โจมตี ผู้โจมตีสามารถสร้างการโจมตีแบบปฏิเสธการให้บริการได้โดยการส่งคำขอค้นหาบ่อยครั้ง"
คำกล่าวนี้ก็เพียงพอที่จะอธิบายปัญหาได้แล้ว
โดยสรุป: ความปลอดภัยไม่ใช่ทางเลือก แต่เป็นสิ่งจำเป็นที่ต้องปฏิบัติ
ความปลอดภัยของเว็บไซต์ไม่ใช่แค่เรื่องเสริม แต่เป็นเรื่องความเป็นความตาย
การปิดใช้งานระบบค้นหาในตัวของ WordPress อาจดูเหมือนเป็นเรื่องเล็กน้อย แต่สามารถช่วยป้องกันฐานข้อมูลของคุณจากการถูกใช้งานหนักเกินไปได้
ในยุคที่ข้อมูลข่าวสารล้นหลามเช่นนี้ ภูมิปัญญาที่แท้จริงไม่ได้อยู่ที่การเพิ่มฟีเจอร์ใหม่ๆ แต่在于การตัดทิ้งฟีเจอร์ที่ไม่มีประสิทธิภาพหรือเป็นอันตรายอย่างเด็ดขาด
โปรดจำไว้ว่า: ความปลอดภัยไม่ใช่ต้นทุน แต่เป็นคุณค่า
หากคุณยังลังเลอยู่ ลองถามตัวเองดูว่า คุณอยากปล่อยให้ฐานข้อมูลล่มท่ามกลางเสียงหัวเราะเยาะของผู้โจมตี หรือคุณอยากควบคุมสถานการณ์เอาไว้เอง?
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ บทความเรื่อง "การปิดใช้งานฟังก์ชันการค้นหาดั้งเดิมใน WordPress อย่างสมบูรณ์เพื่อป้องกันการสแกนจากโปรแกรมที่เป็นอันตรายที่อาจทำให้ฐานข้อมูลเสียหาย" ที่แชร์ไว้ที่นี่ อาจเป็นประโยชน์สำหรับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-34192.html
