WordPress Security As A Process
เผยแพร่แล้ว: 2022-03-10( บทความนี้สนับสนุนโดย Sucuri ) ความปลอดภัยของ WordPress ไม่มีชื่อเสียง มากกว่า 70% ของไซต์ WordPress ทั้งหมดมีช่องโหว่บางประเภทตามการวิจัยที่ทำใน +40.000 ไซต์ WordPress โดย Alexa หากคุณพัฒนาธีมหรือปลั๊กอินของ WordPress – หรือใช้ WordPress สำหรับเว็บไซต์ของคุณ – ตัวเลขนั้นอาจทำให้คุณตกใจ
มีหลายอย่างที่คุณสามารถทำได้เพื่อให้แน่ใจว่าคุณไม่ได้เป็นส่วนหนึ่งของ 70% แต่ต้องใช้เวลามากกว่าแค่การติดตั้งปลั๊กอินหรือการหลีกเลี่ยงสตริง คำแนะนำมากมายในบทความนี้มาจากคู่มือของ Sucuri เกี่ยวกับความปลอดภัยของ WordPress และประสบการณ์ส่วนตัวหลายปี
WordPress ไม่ปลอดภัยหรือไม่?
WordPress มีส่วนแบ่งการตลาดที่ใหญ่ที่สุดในบรรดาระบบการจัดการเนื้อหาและส่วนแบ่งการตลาด 30% จาก 10 ล้านไซต์ที่ได้รับความนิยมสูงสุดบนเว็บ ความสำเร็จแบบนั้นทำให้เป้าหมายใหญ่สำหรับการแฮ็ก WordPress ไม่ได้ปลอดภัยน้อยกว่าระบบจัดการเนื้อหาอื่น ๆ — มันแค่ประสบความสำเร็จมากกว่า
ช่องโหว่ใน WordPress core มีส่วนรับผิดชอบน้อยกว่า 10% ของการแฮ็ก WordPress ทั้งหมด ส่วนใหญ่มาจากการติดตั้ง WordPress ที่ล้าสมัย จำนวนการแฮ็กที่เกิดขึ้นบนช่องโหว่ด้านความปลอดภัยที่เกิดขึ้นจริงในเวอร์ชันล่าสุด (หรือที่เรียกว่าช่องโหว่ซีโร่เดย์) ในบัญชีหลักของ WordPress คิดเป็นเปอร์เซ็นต์เพียงเล็กน้อยของการแฮ็กทั้งหมด
ไซต์ที่ติดไวรัสที่เหลือเกิดจากปลั๊กอิน ธีม โฮสติ้ง และผู้ใช้ และคุณในฐานะนักพัฒนาเว็บไซต์ WordPress สามารถควบคุมสิ่งเหล่านี้ได้ทั้งหมด หากสิ่งนี้ดูยุ่งยากสำหรับคุณ ฉันสามารถแนะนำแผนตัวแทนของ Sucuri ได้ มิฉะนั้น มาดูวิธีจัดการกับความปลอดภัยของ WordPress กัน!
ใครโจมตีคุณและทำไม?
มาทำลายตำนานกันก่อน: เว็บไซต์ WordPress ขนาดเล็กยังคงเป็นเป้าหมายที่น่าสนใจสำหรับแฮกเกอร์ การโจมตีส่วนบุคคลนั้นหายากมาก เว็บไซต์ WordPress ที่ถูกแฮ็กส่วนใหญ่จะถูกโจมตีโดยอัตโนมัติโดยบอทหรือบ็อตเน็ต
บอทเป็นโปรแกรมคอมพิวเตอร์ที่ค้นหาเว็บไซต์เพื่อแฮ็คอย่างต่อเนื่อง พวกเขาไม่สนใจว่าคุณเป็นใคร พวกเขาแค่มองหาจุดอ่อนในแนวรับของคุณ บ็อตเน็ตรวมพลังการประมวลผลของบอทจำนวนมากเพื่อจัดการกับงานที่ใหญ่กว่า
แฮ็กเกอร์กำลังมองหาทางเข้าสู่เซิร์ฟเวอร์ของคุณเป็นหลัก เพื่อที่พวกเขาจะได้ใช้พลังการประมวลผลของเซิร์ฟเวอร์ของคุณ และปล่อยให้มันหลุดไปจากเป้าหมายหรือเป้าหมายอื่น แฮกเกอร์ต้องการเซิร์ฟเวอร์ของคุณด้วยเหตุผลดังต่อไปนี้
การส่งสแปม
สแปมคิดเป็นสัดส่วนประมาณ 60% ของอีเมลทั้งหมด และต้องส่งจากที่ไหนสักแห่ง แฮกเกอร์จำนวนมากต้องการเข้าสู่เซิร์ฟเวอร์ของคุณผ่านปลั๊กอินที่ผิดพลาดหรือ WordPress core รุ่นเก่า เพื่อที่พวกเขาจะได้เปลี่ยนเซิร์ฟเวอร์ของคุณให้เป็นเครื่องส่งสแปม
โจมตีเว็บไซต์อื่น
การโจมตีแบบปฏิเสธการให้บริการแบบกระจายใช้คอมพิวเตอร์จำนวนมากเพื่อทำให้เว็บไซต์มีปริมาณการใช้ข้อมูลมากจนไม่สามารถติดตามได้ การโจมตีเหล่านี้บรรเทาได้ยากมาก โดยเฉพาะอย่างยิ่งเมื่อทำถูกต้อง แฮกเกอร์ที่เจาะเข้าไปในเซิร์ฟเวอร์ของคุณสามารถเพิ่มลงในกลุ่มเซิร์ฟเวอร์เพื่อโจมตีเว็บไซต์ได้
ขโมยทรัพยากร
การขุด cryptocurrency เป็นที่นิยมอย่างมากในขณะนี้ แต่ต้องใช้พลังประมวลผลเป็นจำนวนมาก แฮกเกอร์ที่ไม่ต้องการใช้เงินจำนวนมากในฟาร์มเซิร์ฟเวอร์จะบุกเข้าไปในเว็บไซต์ WordPress ที่ไม่มีการป้องกันและเข้าถึงเซิร์ฟเวอร์หรือผู้เยี่ยมชมเว็บไซต์ของคุณและขโมยพลังการประมวลผล
คะแนน SEO ที่พุ่งสูงขึ้น
แฮ็คยอดนิยมโดยเฉพาะสำหรับ WordPress คือการเข้าถึงฐานข้อมูลและเพิ่มข้อความ (ที่ซ่อนอยู่) จำนวนมากใต้โพสต์แต่ละโพสต์ ซึ่งเชื่อมโยงไปยังเว็บไซต์อื่น เป็นวิธีที่รวดเร็วมากในการเพิ่มคะแนน SEO แม้ว่า Google จะระมัดระวังพฤติกรรมนี้มากขึ้น และบัญชีดำก็เพิ่มขึ้น
### การขโมยข้อมูล
ข้อมูลมีค่า โดยเฉพาะอย่างยิ่งเมื่อเชื่อมโยงกับโปรไฟล์ผู้ใช้และข้อมูลอีคอมเมิร์ซ การรับข้อมูลนี้และการขายสามารถทำให้ผู้โจมตีได้รับผลกำไรที่ดี
ทำไมการรักษาความปลอดภัยถึงมีความสำคัญ?
นอกจากจะไม่ทำให้อาชญากรพึงพอใจแล้ว ยังมีสาเหตุมากมายที่เว็บไซต์ของคุณควรมีความปลอดภัยตามค่าเริ่มต้น หลังจากทำความสะอาดและจัดการกับการแฮ็ก WordPress ด้วยตัวเอง ฉันสามารถพูดได้อย่างแน่นอนว่าไม่เคยเกิดขึ้นในเวลาที่สะดวก การทำความสะอาดอาจใช้เวลาหลายชั่วโมงและจะต้องเสียค่าใช้จ่ายทั้งคุณหรือลูกค้าของคุณ
หากต้องการให้เว็บไซต์ WordPress ที่ถูกแฮ็กกลับมาใช้งานได้อีกครั้ง คุณจะต้องลบและแทนที่โค้ดของบุคคลที่สามทุกบิต (รวมถึงแกน WordPress) รวบรวมรหัสของคุณทีละบรรทัดและโฟลเดอร์อื่น ๆ ทั้งหมดบนเซิร์ฟเวอร์เพื่อให้แน่ใจว่ายังคงสะอาดอยู่ ตรวจสอบว่าผู้ใช้ที่ไม่ได้รับอนุญาตได้รับการเข้าถึงหรือไม่ และแทนที่รหัสผ่านทั้งหมดใน WordPress บนเซิร์ฟเวอร์และฐานข้อมูลของคุณ
บริการมากมายสามารถทำความสะอาดเว็บไซต์ WordPress ให้คุณได้ แต่การป้องกันจะดีกว่ามากในระยะยาว
นอกเหนือจากค่าใช้จ่ายในการทำความสะอาดแล้ว การแฮ็กยังสามารถทำให้คุณสูญเสียยอดขายหรือโอกาสในการขายจำนวนมาก การแฮ็กทำให้คุณมีอันดับการค้นหาต่ำลง ส่งผลให้มีผู้เข้าชมน้อยลงและมี Conversion น้อยลง
มากกว่าต้นทุนทางการเงิน การถูกแฮ็กทำร้ายชื่อเสียงของคุณ ผู้เยี่ยมชมมาที่เว็บไซต์ของคุณเพราะพวกเขาเชื่อใจคุณ การถูกแฮ็กสร้างความเสียหายให้กับชื่อเสียงของคุณ และใช้เวลานานในการซ่อมแซม
นอกจากนี้ยังมีประเด็นทางกฎหมายที่เป็นไปได้อย่างแท้จริง โดยเฉพาะอย่างยิ่งหากคุณมีลูกค้าในสหภาพยุโรป ซึ่งกฎหมาย GDPR จะมีผลบังคับใช้ในช่วงฤดูร้อนปี 2018 กฎหมายใหม่นั้นรวมถึงค่าปรับจำนวนมากสำหรับการละเมิดข้อมูลที่ไม่ได้จัดการอย่างเหมาะสม
เงิน ชื่อเสียง และปัญหาทางกฎหมาย: การรักษาความปลอดภัยที่ไม่ดีอาจทำให้คุณต้องเสียค่าใช้จ่ายเป็นจำนวนมาก การลงทุนเวลาในการสร้างเว็บไซต์ รหัส และทีมของคุณโดยคำนึงถึงความปลอดภัยจะคุ้มค่าอย่างแน่นอน
มาดูกันว่าเราจะป้องกันความชั่วร้ายทั้งหมดนี้ได้อย่างไร
CIA Triad
CIA Triad เป็นเฟรมเวิร์กพื้นฐานสำหรับโครงการความปลอดภัยดิจิทัลทุกโครงการ ย่อมาจากการรักษาความลับ ความสมบูรณ์ และความพร้อมใช้งาน CIA คือชุดของกฎเกณฑ์ที่จำกัดการเข้าถึงข้อมูลให้กับฝ่ายที่ถูกต้อง ทำให้แน่ใจว่าข้อมูลนั้นเชื่อถือได้และถูกต้อง และรับประกันการเข้าถึงข้อมูลนั้นที่เชื่อถือได้
สำหรับ WordPress เฟรมเวิร์กของ CIA มีดังต่อไปนี้
การรักษาความลับ
ตรวจสอบให้แน่ใจว่าผู้ใช้ที่เข้าสู่ระบบมีบทบาทที่ถูกต้องที่ได้รับมอบหมายและความสามารถของพวกเขาถูกตรวจสอบ ให้สิทธิ์การเข้าถึงขั้นต่ำแก่ผู้ใช้เท่านั้น และตรวจสอบให้แน่ใจว่าข้อมูลของผู้ดูแลระบบจะไม่รั่วไหลไปยังฝ่ายที่ผิด คุณสามารถทำได้โดยทำให้พื้นที่ผู้ดูแลระบบของ WordPress แข็งขึ้น และระมัดระวังเกี่ยวกับชื่อผู้ใช้และข้อมูลรับรอง
ความซื่อสัตย์
แสดงข้อมูลที่ถูกต้องบนเว็บไซต์ของคุณ และตรวจสอบให้แน่ใจว่าการโต้ตอบของผู้ใช้บนเว็บไซต์ของคุณเกิดขึ้นอย่างถูกต้อง
เมื่อรับคำขอทั้งด้านหน้าและด้านหลัง ให้ตรวจสอบเสมอว่าเจตนาตรงกับการดำเนินการจริง เมื่อมีการโพสต์ข้อมูล ให้กรองข้อมูลในโค้ดของคุณเพื่อหาเนื้อหาที่เป็นอันตรายโดยใช้การฆ่าเชื้อและหลบหนี ตรวจสอบให้แน่ใจว่าสแปมถูกลบออกโดยใช้บริการป้องกันสแปม เช่น Akismet
มีจำหน่าย
ตรวจสอบให้แน่ใจว่า WordPress, ปลั๊กอิน และธีมของคุณทันสมัยและโฮสต์บนโฮสต์ WordPress ที่เชื่อถือได้ (มีการจัดการที่ดีกว่า) การสำรองข้อมูลอัตโนมัติทุกวันยังช่วยให้แน่ใจว่าเว็บไซต์ของคุณจะพร้อมใช้งานต่อสาธารณะ
ทั้งสามองค์ประกอบพึ่งพาซึ่งกันและกันเพื่อรับการสนับสนุน ความสมบูรณ์ของรหัสจะไม่ทำงานเองหากรหัสผ่านที่เป็นความลับของผู้ใช้ถูกขโมยหรือเดาได้ง่าย ทุกแง่มุมมีความสำคัญต่อแพลตฟอร์มที่แข็งแกร่งและปลอดภัย
การรักษาความปลอดภัยเป็นงานหนักมาก นอกเหนือจากงานที่สามารถทำได้ในโค้ดแล้ว ยังมีองค์ประกอบของมนุษย์จำนวนมากในเฟรมเวิร์กนี้ การรักษาความปลอดภัยเป็นกระบวนการที่คงที่ ไม่สามารถแก้ไขได้ด้วยปลั๊กอินตัวเดียว
ส่วนที่ 1: ความซื่อสัตย์ — อย่าวางใจอะไร
ตรวจสอบเจตนาของการกระทำของผู้ใช้และความสมบูรณ์ของข้อมูลที่คุณกำลังจัดการ โยนฮิปปี้ในตัวคุณออกไปนอกประตู ไม่มีอะไรเชื่อถือได้ในโลกออนไลน์ ดังนั้นให้ตรวจสอบทุกสิ่งที่คุณทำอีกครั้งเพื่อหาเจตนาร้ายที่อาจเกิดขึ้น
การตรวจสอบข้อมูลและการฆ่าเชื้อ
WordPress เป็นเลิศในการจัดการข้อมูล ทำให้แน่ใจว่าทุกการโต้ตอบได้รับการตรวจสอบและทุกบิตของข้อมูลได้รับการฆ่าเชื้อ แต่นั่นเป็นเพียงแกนหลักของ WordPress หากคุณกำลังสร้างปลั๊กอินหรือธีมของคุณเอง หรือแม้แต่ตรวจสอบโค้ดของบุคคลที่สาม การรู้วิธีการทำเช่นนี้เป็นสิ่งสำคัญ
//Cast our variable to a string, and sanitize it. update_post_meta( $post->ID, 'some-meta', sanitize_text_field( (string)$_POST['some-meta'] ) ); //Make sure our variable is an absolute integer. update_post_meta( $post->ID, 'some-int', absint( $_POST['int'] ) );
ในตัวอย่างนี้ เราได้เพิ่มข้อมูลสองส่วนในโพสต์ WordPress โดยใช้ update_post_meta อย่างแรกคือสตริง ดังนั้นเราจึงแปลงเป็นสตริงใน PHP และตัดอักขระและแท็กที่ไม่ต้องการออกด้วย sanitize_text_field
ซึ่งเป็นหนึ่งในฟังก์ชันการฆ่าเชื้อจำนวนมากของ WordPress
เรายังได้เพิ่มจำนวนเต็มในโพสต์นั้นและใช้ absint เพื่อให้แน่ใจว่านี่เป็นจำนวนเต็มสัมบูรณ์ (และไม่เป็นค่าลบ)
การใช้ฟังก์ชันหลักของ WordPress เช่น update_post_meta
เป็นความคิดที่ดีกว่าการใช้ฐานข้อมูล WordPress โดยตรง นี่เป็นเพราะ WordPress ตรวจสอบทุกอย่างที่จำเป็นต้องเก็บไว้ในฐานข้อมูลสำหรับการฉีด SQL ที่เรียกว่า การโจมตีด้วยการฉีด SQL จะเรียกใช้โค้ด SQL ที่เป็นอันตรายผ่านแบบฟอร์มบนเว็บไซต์ของคุณ รหัสนี้จัดการฐานข้อมูลเพื่อทำลายทุกอย่าง ข้อมูลผู้ใช้รั่วไหล หรือสร้างบัญชีผู้ดูแลระบบเท็จ
หากคุณต้องการทำงานกับตารางที่กำหนดเองหรือดำเนินการค้นหาที่ซับซ้อนใน WordPress ให้ใช้คลาส WPDB ดั้งเดิม และใช้ฟังก์ชันการ prepare
ในการสืบค้นข้อมูลทั้งหมดของคุณเพื่อป้องกันการโจมตีด้วยการฉีด SQL:
$tableName = $wpdb->prefix . “my_table”; $sql = $wpdb->prepare( “SELECT * FROM %s”, $tableName ); $results = $wpdb->get_results( $sql );
$wpdb->เตรียมทุกตัวแปรเพื่อให้แน่ใจว่าจะไม่มีโอกาสถูกโจมตีด้วยการฉีด SQL
หลบหนี
เอาต์พุตที่หลบหนีมีความสำคัญพอๆ กับการล้างข้อมูลอินพุต การตรวจสอบความถูกต้องของข้อมูลก่อนที่คุณจะบันทึกเป็นสิ่งสำคัญ แต่คุณไม่สามารถแน่ใจได้ 100% ว่าข้อมูลนั้นยังปลอดภัยอยู่ ไม่เชื่ออะไร WordPress ใช้ตัวกรองจำนวนมากเพื่อเปิดใช้งานปลั๊กอินและธีมเพื่อเปลี่ยนข้อมูลได้ทันที ดังนั้นจึงมีโอกาสดีที่ข้อมูลของคุณจะถูกแยกวิเคราะห์ผ่านปลั๊กอินอื่นๆ เช่นกัน การหลีกเลี่ยงข้อมูลก่อนที่จะเพิ่มลงในธีมหรือปลั๊กอินของคุณเป็นสิ่งที่ควรทำ
การหลบหนีมีไว้เพื่อป้องกันการโจมตีแบบ cross-site scripting (XSS) เป็นหลัก การโจมตี XSS จะแทรกโค้ดที่เป็นอันตรายลงในส่วนหน้าของเว็บไซต์ของคุณ โบนัสเพิ่มเติมของการหลบหนีข้อมูลคือ คุณสามารถมั่นใจได้ว่ามาร์กอัปของคุณยังคงใช้ได้หลังจากนั้น
WordPress มีฟังก์ชันหลบหนีมากมาย นี่เป็นตัวอย่างง่ายๆ:
<a href=“<?php echo esc_url( $url );?>” title=“<?php echo esc_attr( $title );?>”><?php echo esc_html( $title );?></a>
หลบหนีให้เร็วที่สุด เพื่อให้แน่ใจว่าคุณมีคำพูดสุดท้ายเกี่ยวกับข้อมูลของคุณ
คำขอรักษาความปลอดภัย
คำขอของผู้ดูแลระบบ WordPress มีความปลอดภัยอยู่แล้วหากคุณเปิดใช้งาน SSL และถ้าคุณมีโฮสต์ที่เหมาะสม แต่ยังมีช่องโหว่บางอย่างอยู่ คุณต้องตรวจสอบเจตนาของผู้ใช้และตรวจสอบว่าคำขอที่เข้ามาเป็นสิ่งที่ผู้ใช้ที่เข้าสู่ระบบจริงทำ
WordPress ตรวจสอบเจตนาด้วย nonces.. Nonce (หรือ “หมายเลขที่ใช้เพียงครั้งเดียว”) ไม่ใช่คำอธิบายที่ถูกต้องของ API นี้ใน WordPress มันไม่ได้ใช้แค่ตัวเลขเท่านั้น แต่ยังเป็นเหมือนโทเค็นการขอปลอมข้ามไซต์ (CSRF) ที่คุณจะพบในทุกเฟรมเวิร์กของเว็บสมัยใหม่ โทเค็นเหล่านี้ทำให้แน่ใจว่าแฮกเกอร์ไม่สามารถทำการร้องขอซ้ำได้ เป็นมากกว่าแค่ครั้งเดียว แต่ WordPress ชอบความเข้ากันได้แบบย้อนหลัง ดังนั้นชื่อจึงติดอยู่
Nonces ถูกส่งไปพร้อมกับทุกคำขอที่มีช่องโหว่ที่ผู้ใช้ทำ มีการแนบมากับ URL และแบบฟอร์ม และต้องได้รับการตรวจสอบที่ส่วนรับเสมอก่อนดำเนินการตามคำขอ คุณสามารถเพิ่ม nonce ให้กับแบบฟอร์มหรือ URL นี่คือตัวอย่างที่ใช้ในแบบฟอร์ม:
<form method= “post”> <!-- Add a nonce field: --> <?php wp_nonce_field( 'post_custom_form' );?> <!-- other fields: → ... </form>
ในกรณีนี้ เราแค่ใช้ฟังก์ชันตัวช่วยอย่างง่าย wp_nonce_field()
ซึ่งสร้างฟิลด์ที่ซ่อนอยู่สองฟิลด์สำหรับเราซึ่งจะมีลักษณะดังนี้:
<input type="hidden" name="_wpnonce" value="e558d2674e" /> <input type="hidden" name="_wp_http_referer" value="/wp-admin/post.php?post=2&action=edit" />
ฟิลด์แรกตรวจสอบเจตนาโดยใช้รหัสที่สร้างขึ้นด้วยสตริง 'post_custom_form'
ที่เราส่งไปยังฟังก์ชัน ฟิลด์ที่สองจะเพิ่มผู้อ้างอิงเพื่อตรวจสอบว่าคำขอนั้นทำมาจากภายในการติดตั้ง WordPress หรือไม่

ก่อนประมวลผลงานของคุณในส่วนอื่นของแบบฟอร์มหรือ URL คุณจะต้องตรวจสอบ nonce และความถูกต้องด้วย wp_verify_nonce
:
if( wp_verify_nonce( $_REQUEST['_wpnonce'], 'post_custom_form' ) == false ){ wp_die( “Nonce isn\'t valid” ); }
ที่นี่ เรากำลังตรวจสอบ nonce ด้วยชื่อการกระทำของเรา และหากไม่ตรงกัน เราจะหยุดดำเนินการกับแบบฟอร์ม
รหัสบุคคลที่สาม
ปลั๊กอินและธีมของบุคคลที่สามเป็นแหล่งเพาะสำหรับแฮ็ก พวกเขายังเป็นจุดอ่อนที่ยากที่สุดในการถอดรหัสเมื่อรับรองความปลอดภัยของเว็บไซต์ของคุณ
การแฮ็ก WordPress ส่วนใหญ่เกิดจากปลั๊กอิน ธีม และสำเนา WordPress ที่ล้าสมัย ไม่มีซอฟต์แวร์ชิ้นใดที่ปลอดภัย 100% แต่มีปลั๊กอินและธีมจำนวนมากที่นักพัฒนาซอฟต์แวร์ไม่ได้รับการอัปเดตมาระยะหนึ่งแล้ว หรือไม่ปลอดภัยในตอนแรก
รหัสน้อยหมายถึงการแฮ็คน้อยลง ดังนั้น ก่อนติดตั้งปลั๊กอินอื่น ให้ถามตัวเองว่าจำเป็นจริงๆ หรือไม่ มีวิธีอื่นในการแก้ปัญหานี้หรือไม่?
หากคุณแน่ใจว่าต้องการปลั๊กอินหรือธีม ให้พิจารณาอย่างรอบคอบ ดูการจัดอันดับ วันที่ "อัปเดตล่าสุด" และเวอร์ชัน PHP ที่จำเป็นเมื่อเรียกดูผ่านไดเร็กทอรีปลั๊กอินของ WordPress หากคุณพบสิ่งที่คุณกำลังมองหาและทุกอย่างดูเหมือนจะใช้งานได้ ให้ค้นหาการกล่าวถึงสิ่งนั้นในบล็อกการรักษาความปลอดภัยที่เชื่อถือได้ เช่น Sucuri หรือ WordFence
อีกทางเลือกหนึ่งคือสแกนโค้ดและตรวจดูให้แน่ใจว่าโค้ดนั้นไม่มีสิ่งเจือปน สุขาภิบาล และหลบหนี สิ่งเหล่านี้มักเป็นสัญญาณของรหัสที่มีการเขียนอย่างดีและปลอดภัย คุณไม่จำเป็นต้องรู้ PHP หรือตรวจสอบโค้ดทั้งหมด วิธีที่ง่ายและรวดเร็วในการตรวจสอบการใช้ฟังก์ชันความปลอดภัยของ WordPress อย่างเหมาะสมคือการค้นหาโค้ดของปลั๊กอินสำหรับสตริงเหล่านี้:
-
esc_attr
-
esc_html
-
wp_nonce_field
-
wp_nonce_url
-
sanitize_text_field
-
$wpdb->prepare
ปลั๊กอินยังคงปลอดภัยอยู่หากไม่ได้รวมสตริงเหล่านี้ทั้งหมด แต่ถ้าไม่พบหรือพบสตริงเหล่านี้จำนวนน้อย นั่นเป็นแฟล็กสีแดง หากคุณพบช่องโหว่ โปรดแชร์กับผู้สร้างเป็นการส่วนตัว และให้เวลาพวกเขาในการแก้ไข
การติดตามช่องโหว่ในพื้นที่ปลั๊กอิน WordPress เริ่มง่ายขึ้นด้วยความคิดริเริ่ม เช่น wpvulndb
หมายเหตุ: ธีมบางชุดมีปลั๊กอินเวอร์ชันรวมเข้ากับโค้ด นี่เป็นอาการของ WordPress ที่ไม่มีการจัดการการพึ่งพาที่พร้อมใช้งานทันที แต่ก็เป็นสัญญาณของธีมที่เขียนได้ไม่ดีนัก หลีกเลี่ยงธีมเหล่านี้เสมอ เนื่องจากมีฐานโค้ดที่ไม่สามารถอัปเดตได้
ธีมและปลั๊กอินไม่ค่อยมีโค้ดที่เขียนโดยนักพัฒนาเพียงคนเดียว Composer และ NPM ช่วยให้พึ่งพาไลบรารี่อื่นได้ง่ายขึ้นมากจนกลายเป็นเวกเตอร์โจมตียอดนิยม หากคุณกำลังดาวน์โหลดธีมหรือปลั๊กอิน WordPress ที่ตัดต่อแล้วใช้งานได้จริง นี่ไม่ใช่ข้อกังวล แต่ถ้าคุณทำงานกับเครื่องมือที่ใช้ Composer หรือ NPM ก็ไม่เสียหายที่จะตรวจสอบการขึ้นต่อกันของพวกมัน คุณสามารถตรวจสอบการพึ่งพา Composer ด้วยเครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ฟรีโดย SensioLabs บริการเช่น Snyk (ซึ่งคุณใช้งานได้ฟรีแต่มีตัวเลือกพรีเมียมด้วย) ช่วยให้คุณตรวจสอบทุกการพึ่งพาในโครงการของคุณได้
ส่วนที่ 2: ความพร้อมใช้งาน: ทำให้มันง่าย
เป้าหมายหลักของคุณคือการทำให้เว็บไซต์ของคุณออนไลน์โดยไม่หยุดชะงัก แม้จะมีการรักษาความปลอดภัยระดับสูงสุด คุณก็ยังสามารถประสบปัญหาได้ เมื่อสิ่งนั้นเกิดขึ้น การสำรองข้อมูลที่ยอดเยี่ยมจะช่วยให้คุณไม่ต้องปวดหัวมาก
อัพเดท
โอเพ่นซอร์สไม่สามารถมีอยู่ได้หากไม่มีการอัปเดต การโจมตีเว็บไซต์ WordPress ส่วนใหญ่เกิดขึ้นกับซอฟต์แวร์หลักหรือปลั๊กอินเวอร์ชันที่ล้าสมัย การอัปเดตความปลอดภัยสำหรับแกนหลักของ WordPress ได้รับการจัดการโดยอัตโนมัติแล้ว (เว้นแต่คุณจะปิดใช้งานสิ่งนี้ สัตว์ประหลาด!) แต่การอัปเดตความปลอดภัยในปลั๊กอินเป็นอีกเรื่องหนึ่ง
โดยปกติการอัปเดตจะปลอดภัยเมื่อใช้ปลั๊กอินยอดนิยมและเชื่อถือได้ แต่ควรทดสอบปลั๊กอินทั้งหมดก่อนที่จะเผยแพร่บนเว็บไซต์ของคุณ เครื่องมือเช่น WP CLI ทำให้การอัปเดตทุกอย่างง่ายขึ้นมาก Mark Jaquith หัวหน้านักพัฒนาของ WordPress มีบล็อกโพสต์ที่ยอดเยี่ยมเกี่ยวกับการอัปเดตปลั๊กอินทั้งหมดโดยอัตโนมัติแต่จะค่อยๆ ลดลง เพื่อให้คุณสามารถกรองข้อผิดพลาดที่อาจเกิดขึ้นได้
ผู้ใช้ บทบาทและความสามารถ
“ความพร้อมใช้งาน” ใน CIA triad เกี่ยวข้องกับการรับข้อมูลในมือขวา ความสำคัญหลักของเราในเรื่องนี้คือการจำกัดความสามารถของผู้ใช้แบ็กเอนด์ของคุณ อย่าให้ทุกคนมีบัญชีผู้ดูแลระบบ
บัญชีผู้ดูแลระบบใน WordPress นั้นทรงพลังอย่างผิดปกติ มีตัวเลือกใน vanilla WordPress เพื่อเปลี่ยนฐานโค้ดทั้งหมดของคุณจากภายในบัญชีผู้ดูแลระบบ WordPress (หากนี่เป็นเรื่องใหม่สำหรับคุณและคุณยังไม่ได้ปิดการใช้งาน โปรดดำเนินการ)
ระบบบทบาทและความสามารถใน WordPress นั้นทรงพลังและง่ายต่อการแก้ไขโค้ด ฉันสร้างบทบาทใหม่มากมายเมื่อทำงานกับ WordPress ประโยชน์หลักของสิ่งนี้คือ คุณสามารถควบคุมได้อย่างเต็มที่ว่าส่วนใดของระบบที่ผู้ใช้หลายรายเข้าถึงได้ แต่ประโยชน์มหาศาลอีกประการหนึ่งคือการป้องกันไม่ให้โค้ดของบุคคลที่สามเปลี่ยนความสามารถมาตรฐานของคอร์ WordPress
อีเมล
WordPress มักจะจัดการอีเมลผ่านเซิร์ฟเวอร์ที่เปิดอยู่ แต่สิ่งนี้ทำให้อีเมลทั้งหมดของคุณขึ้นอยู่กับเซิร์ฟเวอร์ที่ทำงานอยู่ ป้องกันไม่ให้อีเมลของคุณถูกดักจับและถูกมองว่าเป็นสแปมโดยใช้บริการ SMTP มีตัวเลือกปลั๊กอินมากมายเพื่อให้แน่ใจว่าอีเมลทั้งหมดของคุณถูกส่งผ่านการเชื่อมต่อ SMTP ที่ปลอดภัย
อย่างไรก็ตาม คุณจะต้องเข้าถึงการตั้งค่า DNS ของชื่อโดเมนเพื่อเพิ่มระเบียน Sender Policy Framework (SPF) บริการ SMTP ที่ดีทั้งหมดจะให้บันทึกที่แน่นอนซึ่งจำเป็นต้องเพิ่ม ระเบียน SPF ช่วยให้แน่ใจว่าบริการ SMTP ของคุณได้รับอนุญาตจากโดเมนให้ส่งอีเมลในชื่อ
การตรวจสอบ
การตรวจสอบเว็บไซต์ของคุณทางออนไลน์เป็นงานตลอด 24 ชั่วโมงทุกวันที่สามารถดำเนินการอัตโนมัติได้อย่างเต็มที่ ในกรณีของ WordPress เราสนใจเรื่องเวลาทำงานและความสมบูรณ์ของไฟล์
การตรวจสอบ เวลาทำงาน มักจะเป็นสิ่งที่โฮสต์ที่ดีจะทำเพื่อคุณ เครื่องมือเช่น Uptime Robot เพิ่มความปลอดภัยมากยิ่งขึ้น 50 เว็บไซต์แรกของคุณนั้นฟรีทั้งหมด
เกี่ยวกับ ความสมบูรณ์ของไฟล์ หากแฮ็กเกอร์เข้าถึงเซิร์ฟเวอร์ของคุณได้ พวกเขาสามารถเปลี่ยนรหัสของคุณได้
ในกรณีนี้ ปลั๊กอินคือคำตอบสำหรับปัญหาของคุณ Sucuri มีปลั๊กอินการตรวจสอบที่ยอดเยี่ยม จะตรวจสอบไฟล์ทั้งหมดในการติดตั้งของคุณกับฐานข้อมูลขนาดใหญ่ของโค้ดที่เป็นอันตรายที่รู้จัก นอกจากนี้ยังตรวจสอบว่าแกนของ WordPress ยังคงเป็นแกนหลัก 100% ของ WordPress หรือไม่ และแจ้งให้คุณทราบหากมีการละเมิด เพื่อให้คุณสามารถแก้ไขได้โดยเร็วที่สุด
สำรองข้อมูล
ที่สุดของความปลอดภัยในทุกกระบวนการรักษาความปลอดภัยคือการสำรองข้อมูลอัตโนมัติ เจ้าของที่พักที่ดีส่วนใหญ่จะทำสิ่งนี้ให้คุณ แต่มีตัวเลือกที่ดีอื่นๆ หากโฮสต์ของคุณไม่มีการสำรองข้อมูล Automattic สร้างชื่อ VaultPress และเครื่องมือต่างๆ เช่น BackupBuddy สำรองข้อมูลไปยังบัญชี Dropbox หรือบัคเก็ต Amazon S3
บริการที่เชื่อถือได้ส่วนใหญ่ในพื้นที่สำรองของ WordPress เป็นบริการระดับพรีเมียมหรือปลั๊กอินระดับพรีเมียม ขึ้นอยู่กับว่าคุณจำเป็นต้องควบคุมข้อมูลของคุณอย่างเต็มที่หรือไม่ คุณอาจต้องการปลั๊กอินที่มาพร้อมกับโฮสต์ระบบคลาวด์ แทนที่จะเป็นบริการ อย่างใดอย่างหนึ่งมีค่าทุกเพนนีแม้ว่า
โฮสติ้ง
WordPress ไม่ใช่ซอฟต์แวร์เพียงชิ้นเดียวที่ทำงานบนเซิร์ฟเวอร์ของคุณ เวกเตอร์การโจมตีจำนวนมากเปิดอยู่เมื่อคุณใช้โฮสติ้งที่แย่ อันที่จริง โฮสติ้งที่ไม่ดีเป็นสาเหตุหลักว่าทำไม WordPress ยังรองรับ PHP เวอร์ชันที่ล้าสมัย ในขณะที่เขียน หน้าสถิติของ WordPress รายงานว่า 32.5% ของการติดตั้ง WordPress ทั้งหมดทำงานบนเวอร์ชัน PHP ที่ไม่ได้รับการอัปเดตด้านความปลอดภัยอีกต่อไป

สังเกตว่าเกือบ 60% ของการติดตั้งที่ทำงานบน PHP 5.6 และ 7.0 ซึ่งจะได้รับแพตช์ความปลอดภัยจนถึงสิ้นปีนี้เท่านั้น
โฮสติ้งมีความสำคัญไม่เพียงแต่ในการทำให้ซอฟต์แวร์ของเซิร์ฟเวอร์ของคุณทันสมัยอยู่เสมอ โฮสต์ที่ดีจะให้บริการอื่นๆ มากมาย เช่น การสำรองข้อมูลอัตโนมัติรายวัน การอัปเดตอัตโนมัติ การตรวจสอบความสมบูรณ์ของไฟล์ และการรักษาความปลอดภัยอีเมล มีความแตกต่างอย่างมากระหว่างโฮสต์ WordPress ที่มีการจัดการและโฮสต์ที่ให้โฟลเดอร์ออนไลน์ที่สามารถเข้าถึงฐานข้อมูลได้
คำแนะนำที่ดีที่สุดคือการหาโฮสต์ WordPress ที่มีการจัดการที่เหมาะสม พวกเขามีค่าใช้จ่ายเพิ่มขึ้นเล็กน้อย แต่เป็นแกนหลักที่ยอดเยี่ยมสำหรับเว็บไซต์ WordPress ของคุณ
ส่วนที่ 3: การรักษาความลับ
หากคุณแน่ใจว่าฐานรหัสของคุณปลอดภัยเท่าที่ควร และคุณอยู่ในโฮสต์ WordPress ที่ยอดเยี่ยม รายล้อมด้วยเครื่องสแกนมัลแวร์และการสำรองข้อมูล คุณจะยังคงประสบปัญหาด้านความปลอดภัยเพราะผู้คนนั้นแย่ที่สุด … ที่ความปลอดภัยทางอินเทอร์เน็ต
การรักษาความลับคือการให้ความรู้แก่ตนเอง ลูกค้า และผู้ใช้เว็บไซต์
ข้อมูลลับ
คุณอาจไม่ทราบ แต่ปลั๊กอินและธีมของคุณอาจแสดงข้อมูลที่เป็นความลับอันมีค่า ตัวอย่างเช่น หากคุณตั้งค่า WP_DEBUG
true
แสดงว่าคุณกำลังแสดงเส้นทางรากของเว็บไซต์ของคุณบนเซิร์ฟเวอร์ให้แฮ็กเกอร์ทุกคน ข้อมูลการดีบักไม่ควรมีอยู่ในเว็บไซต์ที่ใช้งานจริงของคุณ
แหล่งข้อมูลที่มีค่าอีกแหล่งหนึ่งคือความคิดเห็นและหน้าผู้เขียน เหล่านี้เต็มไปด้วยชื่อผู้ใช้และแม้แต่ที่อยู่อีเมล แฮ็กเกอร์สามารถใช้สิ่งเหล่านี้ร่วมกับรหัสผ่านที่ไม่รัดกุมเพื่อเข้าสู่เว็บไซต์ของคุณ ระวังสิ่งที่คุณแสดงให้โลกภายนอกเห็น
นอกจากนี้ ให้ตรวจสอบอีกครั้งว่าคุณได้ใส่ wp-config.php
ใน .gitignore
ของคุณ
อย่าเข้ารหัสคนเดียว
วิธีป้องกันข้อผิดพลาดมากมายจากการแอบเข้าไปในฐานโค้ดของคุณคือการฝึกเขียนโปรแกรมคู่ หากคุณอยู่คนเดียว สิ่งนี้ยากกว่ามาก แต่มีชุมชนออนไลน์จำนวนมากที่ยินดีทำการตรวจสอบโค้ดอย่างรวดเร็ว ตัวอย่างเช่น WordPress ใช้ Slack เพื่อสื่อสารทุกอย่างเกี่ยวกับการพัฒนาแพลตฟอร์ม คุณจะพบผู้คนมากมายที่นั่นที่เต็มใจช่วยเหลือ ทางเลือกที่ช้ากว่าแต่ดีกว่าคือฟอรัม WordPress, ปัญหา StackOverflow และ GitHub ที่คำถามของคุณ (และคำตอบ!) จะถูกบันทึกไว้เพื่อให้ผู้อื่นได้รับประโยชน์จากคำถามเหล่านี้
การขอข้อมูลอาจเป็นเรื่องยาก แต่ผู้คนชอบแสดงความเชี่ยวชาญของตน และโดยทั่วไปแล้ว WordPress มีชุมชนที่เปิดกว้างและยินดีต้อนรับ ประเด็นก็คือ หากคุณไม่เคยขอข้อมูลเกี่ยวกับคุณภาพของรหัส คุณจะไม่รู้ว่ารหัสของคุณปลอดภัยหรือไม่
เข้าสู่ระบบและรหัสผ่าน
ลูกค้าของคุณจะต้องลงชื่อเข้าใช้ WordPress เพื่อจัดการเนื้อหาของพวกเขา คอร์ของ WordPress ทำทุกอย่างที่ทำได้เพื่อป้องกันไม่ให้รหัสผ่านที่ไม่รัดกุมเข้าถึงได้ แต่โดยปกติแล้วไม่เพียงพอ
ฉันแนะนำให้เพิ่มปลั๊กอินสำหรับการตรวจสอบสิทธิ์แบบสองปัจจัยในเว็บไซต์ของคุณ พร้อมกับจำกัดความพยายามในการเข้าสู่ระบบ ยิ่งไปกว่านั้น เลิกใช้รหัสผ่านทั้งหมดและทำงานกับลิงก์เวทย์มนตร์
เชื่อแต่ยืนยัน
ในบทความนี้ เรายังไม่ได้พูดถึงวิศวกรรมสังคมเลย เป็นการแฮ็กรูปแบบหนึ่งที่กำลังได้รับโมเมนตัม แต่โดยทั่วไปจะไม่ใช้เพื่อแฮ็คเข้าสู่เว็บไซต์ WordPress อย่างไรก็ตาม เป็นวิธีที่ยอดเยี่ยมในการสร้างวัฒนธรรมรอบ ๆ เว็บไซต์ของคุณโดยคำนึงถึงความปลอดภัย นั่นเป็นเพราะการป้องกันที่ดีที่สุดจากวิศวกรรมสังคมคือ "เชื่อถือแต่ยืนยัน"
เมื่อใดก็ตามที่ลูกค้า ผู้ใช้ หรือเจ้านายของคุณขอสิ่งที่เกี่ยวข้องกับความปลอดภัย วิธีที่ดีที่สุดในการจัดการกับมันคือการไว้วางใจ แต่ก่อนอื่นให้ตรวจสอบว่าสิ่งที่พวกเขาพูดนั้นเป็นความจริงหรือไม่
ลูกค้าสามารถอ้างว่าพวกเขาต้องการสิทธิ์การเข้าถึงของผู้ดูแลระบบใน WordPress แต่งานของคุณคือการตรวจสอบว่าสิ่งนี้เป็นความจริงหรือไม่ พวกเขาต้องการการเข้าถึงจริง ๆ หรือขาดความสามารถเพียงอย่างเดียวในบทบาทของพวกเขา? มีวิธีแก้ปัญหานี้โดยไม่ต้องเพิ่มเวกเตอร์การโจมตีใหม่หรือไม่?
“เชื่อถือแต่ยืนยัน” เป็นมนต์ที่เรียบง่ายแต่มีประสิทธิภาพเมื่อพูดถึงคำถามเพื่อความปลอดภัย และสามารถช่วยให้ผู้คนได้รับทราบข้อมูลอย่างรวดเร็ว
บทสรุป
WordPress ไม่ปลอดภัยหรือไม่? ไม่มันไม่ใช่. คอร์ของ WordPress ได้รับการอัปเดตและแก้ไขอย่างต่อเนื่อง และรายงานการแฮ็ก WordPress ส่วนใหญ่ไม่ได้มาจาก WordPress เอง วัฒนธรรมที่อยู่รอบ ๆ WordPress ไม่ปลอดภัยหรือไม่? คุณเบ็ตช่า!
แต่ด้วยการคำนึงถึงความปลอดภัยในโค้ดทุกบรรทัดที่คุณเขียน ผู้ใช้ทุกคนที่คุณเพิ่ม ทุกปลั๊กอินที่คุณเปิดใช้งาน และทุกบิลโฮสติ้งที่คุณจ่าย อย่างน้อย คุณสามารถมั่นใจได้ว่าคุณกำลังใช้งานเว็บไซต์ที่ปลอดภัยซึ่งรักษาชื่อเสียงของคุณไว้เหมือนเดิมและ ข้อมูลปลอดภัย