คำแนะนำเกี่ยวกับ Nonces ใน WordPress

เผยแพร่แล้ว: 2023-02-12

ความปลอดภัยเป็นหัวข้อที่สำคัญสำหรับเจ้าของเว็บไซต์ทุกคน แม้ว่าจะมีกลยุทธ์มากมายในการทำให้เว็บไซต์ของคุณปลอดภัย แต่การใช้ nonces ใน WordPress ก็ไม่ควรมองข้าม นี่เป็นหนึ่งในฟีเจอร์ความปลอดภัยที่ใช้กันแพร่หลายมากที่สุด และป้องกันปัญหาต่างๆ ที่อาจเกิดขึ้น

Nonce คือ 'ตัวเลขที่ใช้ครั้งเดียว' และจะปกป้องแบบฟอร์มและ URL จากบุคคลที่ไม่ประสงค์ดีและการใช้งานในทางที่ผิดอื่นๆ ตัวเลขเหล่านี้ทำงานเป็นค่าระบุตัวตนที่เบราว์เซอร์ของผู้ใช้จะต้องแสดง เพื่อให้ได้รับอนุญาตในการดำเนินการที่ละเอียดอ่อน

ในบทความนี้ เราจะมาดูกันว่า nonces ทำงานอย่างไรใน WordPress และวิธีการสร้าง จากนั้นเราจะหารือเกี่ยวกับวิธีการตรวจสอบ nonce มาเริ่มกันเลย!

สารบัญ
1. Nonces ทำงานอย่างไรใน WordPress?
2. การสร้าง Nonce
3. การตรวจสอบ Nonce
4. สร้างประสบการณ์ดิจิทัลที่ปลอดภัยบน WP Engine

Nonces ทำงานอย่างไรใน WordPress?

จุดประสงค์หลักของ nonce คือการปกป้องเว็บไซต์ WordPress ของคุณจากการโจมตีที่เป็นอันตราย เช่น Cross-Site Request Forgeries (CSRF) การโจมตีประเภทนี้หลอกให้ผู้ใช้ส่งแบบฟอร์มหรือคลิกลิงก์ที่เป็นอันตรายต่อเว็บไซต์ของคุณ เพื่อปกป้องไซต์ของคุณ WordPress จะตรวจสอบค่า nonce และอนุญาตให้ดำเนินการได้ก็ต่อเมื่อค่านั้นถูกต้องเท่านั้น

Nonces เป็นส่วนหนึ่งของฟังก์ชันการทำงานของ WordPress แล้ว และคุณไม่จำเป็นต้องเพิ่มลงในองค์ประกอบที่สร้างโดย WordPress ซึ่งหมายความว่าการดำเนินการหลัก เช่น การเพิ่มและแก้ไขโพสต์จะได้รับการป้องกันโดยอัตโนมัติ

เมื่อใช้ nonce จะมีอายุการใช้งานเริ่มต้นที่ 24 ชั่วโมง หลังจากนั้น จะไม่สามารถใช้ nonce เพื่อยืนยันการดำเนินการที่กำหนดไว้ได้อีกต่อไป อย่างไรก็ตาม อายุการใช้งานนี้สามารถปรับเปลี่ยนได้โดยผู้ดูแลเว็บไซต์

หนึ่งในการโจมตี CSRF ที่พบบ่อยที่สุดที่ไม่มีการป้องกันคือการลบบัญชีผู้ใช้ที่เป็นอันตราย หลังจากใช้ nonce หน้าจอผู้ดูแลระบบของคุณจะสร้าง URL สำหรับการลบบัญชี WordPress จะเพิ่ม nonce ต่อท้าย URL ซึ่งจะมีลักษณะดังนี้:

http://yourdomain.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315

หากผู้โจมตีพยายามแทนที่ ID ผู้ใช้ด้วยค่าอื่น เช่น “user=8” ค่า nonce จะไม่ถูกต้อง การลบบัญชีจะล้มเหลว และหน้าข้อผิดพลาดต้องห้าม 403 จะปรากฏขึ้น ซึ่งจะทำให้ผู้ไม่ประสงค์ดีโจมตีเนื้อหาในไซต์ของคุณได้ยากขึ้นมาก

การรู้ว่า nonces สามารถปกป้องเว็บไซต์ของคุณได้นั้นมีความสำคัญ แต่คุณต้องเข้าใจวิธีการนำไปใช้ด้วย แม้ว่าจะเปิดใช้งานสำหรับคุณลักษณะเริ่มต้นของ WordPress แล้ว คุณอาจต้องติดตั้งด้วยตนเองสำหรับธีมและปลั๊กอินของคุณ

การสร้าง Nonce

หากต้องการสร้าง nonce คุณจะต้องเพิ่มฟังก์ชันให้กับโค้ดของเว็บไซต์ของคุณ รหัสการสร้างทั้งหมดจะอยู่ในไฟล์ functions.php หากต้องการเปิดไฟล์นี้ ให้ไปที่ ลักษณะที่ปรากฏ > ตัวแก้ไขธีม ในแดชบอร์ด WordPress ของคุณ ทางด้านขวา คลิกที่ functions.php เพื่อเปิดโปรแกรมแก้ไขไฟล์

Nonces ถูกนำมาใช้แยกกันสำหรับ URL แบบฟอร์ม และการดำเนินการ หากต้องการสร้างการดำเนินการให้เพิ่มรหัสต่อไปนี้ในไฟล์นี้:

 $nonce= wp_create_nonce('$action');

ควรปรับส่วน "$action" ของโค้ดให้สะท้อนถึงการกระทำที่คุณต้องการให้ nonce ตรวจสอบ ตัวอย่างคือการใช้การดำเนินการ "ลบโพสต์" ซึ่งตั้งค่า nonce เพื่อยืนยันผู้ใช้ที่พยายามลบโพสต์

หากต้องการสร้าง nonce สำหรับ URL คุณสามารถใช้รหัสต่อไปนี้:

 $nonce= wp_nonce_url();

ภายในวงเล็บ คุณจะต้องระบุอาร์กิวเมนต์ของฟังก์ชัน นี่คือ URL เปล่าและสตริงสำหรับการดำเนินการของผู้ใช้ สตริงควรเจาะจงสำหรับผู้ใช้รายเดียว เพื่อปรับปรุงความปลอดภัยของ nonce

หากคุณต้องการสร้าง nonce เพื่อลบบัญชีผู้ใช้ คุณสามารถใช้ส่วนย่อยนี้:

 $nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);

WordPress จะใช้ชื่อเริ่มต้นของ nonce เป็น “_wpnone” แต่คุณสามารถอัปเดตได้โดยเพิ่มชื่อที่คุณเลือกต่อท้ายสตริงด้านบน

หากต้องการสร้าง nonce สำหรับฟอร์ม ให้ใส่รหัสนี้:

 $nonce= wp_nonce_field();

ในวงเล็บ คุณจะต้องเพิ่มสตริงสำหรับการดำเนินการของผู้ใช้ เมื่อเสร็จแล้ว ฟังก์ชันจะสร้างฟิลด์ที่ซ่อนอยู่สองฟิลด์ในแบบฟอร์ม โดยฟิลด์แรกจะเก็บค่าแฮชที่ไม่มีค่า ช่องที่สองคือ URL ปัจจุบัน ฟังก์ชันสุดท้ายควรมีลักษณะดังนี้:

 $nonce= wp_nonce_field('remove-comment_'.$comment_id);

ฟังก์ชัน nonce นี้จะมีชื่อ nonce ของ WordPress ที่เป็นค่าเริ่มต้นด้วย อย่างไรก็ตาม นี่เป็นสิ่งที่คุณสามารถแก้ไขได้หากต้องการ

กำลังตรวจสอบ Nonce

หลังจากเพิ่ม nonce ลงในเว็บไซต์ WordPress แล้ว สิ่งสำคัญคือคุณต้องยืนยัน สิ่งนี้ทำให้มั่นใจได้ว่า nonce ทำงานได้อย่างถูกต้องและทำให้เว็บไซต์ของคุณปลอดภัย

วิธีการต่างๆ ใช้ในการตรวจสอบ nonce สำหรับ URL และแบบฟอร์ม หากต้องการตรวจสอบ URL อีกครั้ง ให้เพิ่มโค้ดต่อไปนี้ในไฟล์ functions.php :

 wp_verify_nonce($nonce, $action);

ในฟังก์ชันนี้ ให้ปรับ "$nonce" เป็นชื่อของ nonce ที่คุณต้องการตรวจสอบ เช่น "delete-user" จากนั้น เปลี่ยนสตริง “$action” เป็นเวลาเฉพาะที่สร้าง nonce เมื่อฟังก์ชันทำงาน ฟังก์ชันจะส่งกลับเป็น "เท็จ" หาก nonce ไม่ถูกต้อง

ในทางกลับกัน หาก nonce ถูกต้อง ฟังก์ชันจะส่งกลับค่า 1 หรือ 2 ซึ่งจะบอกอายุของ nonce ค่าเท่ากับ 1 หมายความว่า nonce ถูกสร้างขึ้นในช่วง 12 ชั่วโมงที่ผ่านมา ค่าเท่ากับ 2 หมายความว่า nonce ถูกสร้างขึ้นเกิน 12 ชั่วโมง แต่น้อยกว่า 24 ชั่วโมงที่ผ่านมา

หากคุณได้เพิ่ม nonce ลงในฟอร์ม จำเป็นต้องมีโค้ดต่อไปนี้เพื่อยืนยัน:

 check_admin_referer($action, $nonce);

ถ้าค่า nonce ถูกต้อง แบบฟอร์มจะทำงานตามที่ต้องการ อย่างไรก็ตาม หาก nonce ไม่ถูกต้อง เบราว์เซอร์ของผู้ใช้จะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าข้อผิดพลาดต้องห้าม 403

สร้างประสบการณ์ดิจิทัลที่ปลอดภัยบน WP Engine

การรักษาความปลอดภัยมีความสำคัญอย่างยิ่งต่อเว็บไซต์ที่มีเสถียรภาพ และเว็บไซต์อื่นๆ จะเพิ่มการป้องกันอีกชั้นหนึ่ง ในการนำไปใช้ สิ่งที่คุณต้องทำคือเพิ่มโค้ดลงในไฟล์ functions.php ของคุณ รหัสที่ใช้จะแตกต่างกันไปขึ้นอยู่กับประเภทของ nonce ที่คุณต้องการสร้างและการกระทำที่คุณต้องการปกป้อง

แม้ว่าการสร้างและใช้ nonces จะช่วยเพิ่มความปลอดภัยของไซต์ แต่ก็มีโปรโตคอลความปลอดภัยอื่นๆ ที่ต้องพิจารณาเช่นกัน โชคดีที่แพลตฟอร์มโฮสติ้ง WordPress ที่ปลอดภัยของ WP Engine มีทรัพยากรด้านความปลอดภัยที่ดีที่สุดสำหรับผู้ใช้และนักพัฒนา สิ่งนี้ทำให้คุณมีเวลามากขึ้นในการมุ่งเน้นไปที่การปรับปรุงไซต์ WordPress ของคุณให้สมบูรณ์แบบ!