Skip to content

ปลั๊กอินคู่ใจนักพัฒนาเว็บ Advanced Custom Fields ออกเวอร์ชั่นใหม่ 6.2.5 เน้นแก้ไขเรื่องความปลอดภัยที่สำคัญรวมถึงสิ่งที่ต้องทราบก่อนจะอัพเดต แนะนำให้รีบอัพเดตไว้ก่อนดีที่สุด

Advanced Custom Fields คือ

Advanced Custom Fields ปลั๊กอินสำหรับสร้าง Custom field ต่างๆ ที่เราสามารถปรับแต่งได้เอง มียอดติดตั้งกว่า 2 ล้านครั้ง ได้รับการโหวตระดับ 5 ดาวในเว็บ wordpress และเป็นปลั๊กอินที่อาจเรียกได้ว่าจำเป็นต้องมีสำหรับนักพัฒนาเว็บบนระบบ WordPress ล่าสุดได้ออกอัพเดตเวอร์ชั่นย่อย 6.2.5 แก้ไขเรื่องความปลอดภัยที่สำคัญ

แก้ไขความปลอดภัยด้านไหน

ACF เวอร์ชั่น 6.2.5 การใช้ Shortcode เพื่อ Output ACF field จะถูกเปลี่ยนแปลงโดยฟังก์ชั่น HTML escaping ของระบบ WordPress ที่ชื่อ wp_kses คือถ้าเราใช้ shortcode อย่าง ([acf field=”field_name”]) เพื่อ Output ค่าใน HTML ก็อาจจะไม่ปลอดภัย เช่นพวกสคริปต์ หรือ iframes สำหรับTextarea หรือฟิลด์ WYSIWYG

Note: wp_kses คือฟังก์ชันในระบบ Worddpress ที่จะทำให้องค์ประกอบ HTML อย่าง ชื่อ attribute, ค่า attribute และ HTML entities อนุญาตให้เกิดขึ้นใน text string

เพิ่มเติมเกี่ยวกับ wp_kses

ซึ่งทาง ACF ได้ให้ความสำคัญกับความปลอดภัย และคำนึงถึงผลกระทบที่เกิดจากการแก้ไขที่อาจมีผลต่อเว็บไซต์ ปลั๊กอินจะระบุฟิลด์ที่ได้รับผลกระทบ โดยจะแสดงการแจ้งเตือนในหน้าจอผู้ดูแลระบบ WordPress เมื่อมีการ Outputจากการเปลี่ยนแปลงนี้

ACF เวอร์ชั่น 6.2.7 ซึ่งคาดว่าจะมาในเดือนกุมภาพันธ์ 2024 การใช้ escaping HTML ที่ไม่ปลอดภัยจะถูกนำไปใช้กับฟังก์ชันอื่นๆ เกี่ยวกับจัดการ Output ค่าของฟิลด์ คือฟังก์ชั่น the_field() และ the_sub_field() ด้วยครับ เพื่อช่วยในการก้าวผ่านผลกระทบของการเปลี่ยนแปลงในอนาคต ซึ่งทาง ACF ได้เพิ่มประกาศใน ACF 6.2.5 ไว้แล้วเพื่อแจ้งเตือนว่าเว็บไซต์ของคุณกำลังแสดงค่า HTML และจะมีการเปลี่ยนแปลงในเวอร์ชั่น 6.2.7

ช่องโหว่นี้ทำให้ User บนเว็บที่มีบทบาทเป็น contributor หรือสูงกว่า ปกติจะไม่มีสิทธิ์เรื่อง unfiltered_html ซึ่งสงวนไว้สำหรับ Admin เท่านั้น จะสามารถตั้งค่าของรายการ Meta ที่กำหนดเองภายนอก ACF ให้ใช้ HTML ที่เป็นอันตรายได้ด้วยตนเอง คือสามารถใช้ Shortcode ของ ACF เพื่อ Output HTML ที่ไม่ปลอดภัยได้

ส่วนACF 6.2.5 จะตรวจจับเมื่อมีการ Output HTML ที่ไม่ปลอดภัย และจะลบออกจากค่าฟิลด์ พร้อมแสดง ข้อความ Error ในระบบหลังบ้านของ WordPress โดยแสดงรายการฟิลด์ที่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้ ซึ่งจะช่วยให้เราวินิจฉัยได้ว่าต้องแก้ไขจุดใดบ้าง



ตัวอย่างข้อความแจ้งเตือน Error ในระบบหลังบ้าน

การเปลี่ยนแปลงที่จะเกิดขึ้นกับ the_field()

จากการทดสอบการเปลี่ยนแปลงข้างต้นเพื่อแก้ไขช่องโหว่ ทาง ACF ได้ปรับปรุงความปลอดภัยกับผลลัพธ์ของฟิลด์ โดยเฉพาะอย่างยิ่ง ฟังก์ชัน the_field() และ the_sub_field() ทำให้ HTML ปลอดภัยตามค่าเริ่มต้น ซึ่ง ACF 6.2.5 จะเริ่มตรวจจับเมื่อค่าที่ Escape แตกต่างจากค่า Output ในปัจจุบันที่บ่งชี้ว่ามีบางสิ่งกำลังถูกลบออกจากค่าของฟิลด์ รายการฟิลด์ที่ได้รับผลกระทบจะแสดงเป็นข้อความในระบบหลังบ้านของ WordPress ข้อความนี้จะปรากฏแก่ผู้ที่เป็น Admin

ย้ำอีกทีว่า ACFไม่ได้เลิกใช้หรือลบคำสั่ง the_field() หรือ the_sub_field() ออก เพียงแต่ทำให้มั่นใจว่าจะสามารถส่งออก HTML ที่ปลอดภัยตามค่าเริ่มต้นเท่านั้นครับ

วิธีใช้ ACF อย่างปลอดภัย

สำหรับนักพัฒนาที่ใช้ปลั๊กอิน ACF อาจมีกรณีที่ต้องจัดเก็บ HTML แล้วจำเป็นต้อง Outputค่าที่ไม่ปลอดภัย เช่น การใช้ฟิลด์ Text Areaเพื่อจัดเก็บแท็ก <script> แบบเต็มซึ่งจำเป็นต้องให้ผู้ใช้เว็บแก้ไขสิ่งนี้

ทาง ACF ได้เแนะนำให้คุณใช้ echo get_field() รวมถึงฟิลด์อื่นๆ เพื่อ Output HTML ที่ไม่ปลอดภัยนี้ แต่…ต้องแน่ใจว่าคุณใช้คำสั่ง Escape ที่เหมาะสมสำหรับประเภทของฟิลด์ที่คุณต้องการ ซึ่งน่าจะเป็นฟังก์ชัน wp_kses_post เช่น

echo wp_kses_post( get_field(‘field_name’) );

Note: การ Escape output จะเป็นกระบวนการในการรักษาความปลอดภัยข้อมูล Outputโดยการแยกข้อมูลที่ไม่ต้องการออก เช่น HTML หรือแท็กสคริปต์ที่มีรูปแบบไม่ถูกต้อง กระบวนการนี้ช่วยรักษาความปลอดภัยข้อมูลของคุณก่อนที่จะแสดงผลให้กับผู้ใช้ปลายทาง

เพิ่มเติมเกี่ยวกับ Escape Output

สรุป

ACF ทุกเวอร์ชันก่อน ACF 6.2.5 มีความเสี่ยงต่อช่องโหว่ Shortcode ตามที่แจ้งไป ดังนั้นควรจะอัปเกรดเวอร์ชั่นของปลั๊กอินทันทีทั้งเวอร์ชั่นฟรีและ Pro และควรปิดการใช้ Shortcode ACF ทั้งหมดหากคุณไม่ได้ใช้ครับ

รายละเอียดเพิ่มเติม

Back To Top
Search