ตัวแปลง HTML (เข้ารหัส/ถอดรหัส)
ตัวแปลง HTML (เข้ารหัส/ถอดรหัส)
ตัวแปลง HTML (เข้ารหัส/ถอดรหัส): รองรับการ escape และ unescape เอนทิตี HTML จัดการอักขระพิเศษและแท็ก ตรวจจับรูปแบบเอนทิตีที่มีชื่อและตัวเลขโดยอัตโนมัติ ป้องกันการโจมตี XSS เหมาะสำหรับการแสดงข้อมูลที่ผู้ใช้ป้อน ตัวอย่างโค้ด และการประมวลผลเนื้อหาที่ปลอดภัย
เริ่มต้นอย่างรวดเร็ว
สถานการณ์การใช้งานทั่วไป
คอมเมนต์ผู้ใช้
Escape ข้อความที่ผู้ใช้ส่งมาเพื่อลดความเสี่ยง XSS
บทความบล็อก
แสดงตัวอย่างโค้ด HTML ในเนื้อหา
กระทู้/ฟอรัม
แสดงเนื้อหาที่ผู้ใช้สร้างอย่างปลอดภัย
ระบบแชต
ป้องกันไม่ให้โค้ดอันตรายแพร่กระจายผ่านข้อความ
ข้อมูลฟอร์ม
ประมวลผลและแสดงข้อมูลจากฟอร์มโดยไม่เสี่ยง XSS
หน้าแสดงโค้ด
แสดงโค้ด HTML/JavaScript บนหน้าเว็บ
สถานการณ์เสริม
HTML entities, escape HTML และ unescape HTML ก็จัดการในขั้นตอนเดียวกันได้ ช่วยตรวจผลลัพธ์ให้เร็วขึ้นก่อนคัดลอกหรือส่งออก
กฎและรูปแบบการ Escape HTML
คำแนะนำการใช้งาน
ข้อจำกัดและความเข้ากันได้
การจัดการเซสชัน
คำถามที่พบบ่อย
XSS คือการที่ผู้โจมตีฝังสคริปต์อันตรายลงในหน้าเว็บเพื่อขโมยข้อมูลหรือทำการกระทำที่ไม่พึงประสงค์ HTML Escaping เป็นแนวป้องกันขั้นพื้นฐานอย่างหนึ่ง
ควร Escape เมื่อแสดงผลอินพุตที่มาจากผู้ใช้ทุกชนิด เช่น คอมเมนต์ ข้อความ ข้อมูลฟอร์ม ฯลฯ เนื้อหาใด ๆ ที่อาจมีแท็ก HTML ควรถูก Escape
ทั้งสองแสดงถึง < (น้อยกว่า) เหมือนกัน < เป็น named entity; ส่วน </< เป็น numeric/hex entity ใน HTML สมัยใหม่ทั้งสองทำงานเหมือนกัน ใช้ < เพื่อให้อ่านง่าย และใช้ </< เมื่อไม่รองรับ named entity หรือเมื่อแปลงตัวอักษรตามรหัสอย่างเคร่งครัด ควรใส่เซมิคอลอนท้ายเสมอ มิฉะนั้น parser อาจต่อกับตัวอักษรถัดไป
ไม่ได้ HTML Escaping ใช้ได้เฉพาะใน HTML context ส่วน JavaScript CSS และ URL ต้องใช้เทคนิค Escape คนละแบบ
มักเกิดจากการ Escape ซ้ำหลายครั้ง เช่น รอบแรก < ถูกแปลงเป็น &lt; แล้วรอบต่อมา & ถูก Escape เป็น &amp; ทำให้ได้ &amp;lt; ควรหลีกเลี่ยงการ Escape ซ้ำโดยไม่จำเป็น
ควรใช้ Sanitization: กำหนด allow-list ของแท็ก/แอตทริบิวต์ที่อนุญาตและกรอง protocol ที่ปลอดภัย เช่น อนุญาตเฉพาะ p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3; สำหรับ a ให้ใช้เพียง href/title/target, สำหรับ img ใช้เฉพาะ src/alt; ลบ style และ event handler ที่ขึ้นต้นด้วย on* ทั้งหมด แนะนำให้ใช้ DOMPurify หรือ sanitize-html ทำ Sanitization ที่เซิร์ฟเวอร์เมื่อเป็นไปได้ และอย่าใส่เนื้อหาที่ไม่น่าเชื่อถือผ่าน innerHTML/dangerouslySetInnerHTML ให้ใช้ textContent เมื่อแสดงข้อความล้วน