เอาต์พุต HTML ควรส่งผ่าน esc_html () และ wp_kses () หรือไม่


11

ฉันสับสนเกี่ยวกับการใช้ที่แตกต่างกันและesc_html() wp_kses()ฉันเข้าใจว่าesc_html()แปลงอักขระพิเศษเป็นเอนทิตี HTML ของพวกเขาและwp_kses()ลบแท็กที่ไม่พึงประสงค์ (เช่น<script>) แต่ฉันไม่แน่ใจในบริบทที่ควรใช้ร่วมกันหรือแยกกัน

หากฉันใช้ HTML ที่ไม่น่าเชื่อถือผ่านesc_html()JavaScript จะแสดงเป็นข้อความธรรมดาแทนที่จะแสดงผลโดยเบราว์เซอร์ดังนั้นจึงปลอดภัยที่จุดนั้นถูกต้องหรือไม่ เหตุผลเดียวที่จะใช้งานได้wp_kses()ก็คือเพื่อหลีกเลี่ยงการแสดงสคริปต์ดิบ?

โดยทั่วไปesc_html()ทำให้ปลอดภัยและwp_kses()ทำให้สวย ถูกต้องหรือไม่

คำตอบ:


16

กฎทั่วไปอย่างน้อยที่สุดก็ดำเนินการโดยมาร์ค Jaquithถูกฆ่าเชื้อในการป้อนข้อมูลหลบหนีจากการส่งออก (ข้อพิสูจน์ถึงกฎนี้ถูกฆ่าเชื้อในช่วงต้นหนีสาย )

ดังนั้นงาน: ใช้ฟิลเตอร์ฆ่าเชื้อ (เช่นkses()ในครอบครัว) เมื่อการจัดเก็บข้อมูลที่ไม่น่าเชื่อถือในฐานข้อมูลและการใช้ฟิลเตอร์หลบหนี (เช่นesc_*()ในครอบครัว) เมื่อการแสดงผลข้อมูลที่ไม่น่าเชื่อถือในแม่แบบ


14

ควรใช้ฟังก์ชั่น kses เมื่อคุณต้องการอนุญาตให้บางส่วนของ html อยู่ในผลลัพธ์ ตัวอย่างเช่นความคิดเห็นอนุญาต HTML บางอย่างสำหรับพวกเขาตัวหนาตัวเอียงลิงก์และอื่น ๆ

ควรใช้ฟังก์ชัน esc_html เพื่อยกเว้น html อย่างสมบูรณ์ ไม่มี HTML ที่จะผ่านได้โดยไม่ถูกแปลงเป็นสิ่งที่จะถูกตีความว่าเป็นเบราว์เซอร์ที่ไม่ใช่ HTML

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.