HTML Entities

เข้ารหัสและถอดรหัสอักขระพิเศษและ entities ของ HTML

กรณีการใช้งาน

  • เข้ารหัสเนื้อหาของผู้ใช้เพื่อความปลอดภัยใน HTML — แปลง `<script>` เป็น `&lt;script&gt;` ก่อนแทรกลงในเทมเพลต
  • อ่านแหล่งที่มาของอีเมล HTML ดิบ — ถอดรหัส `&amp;` และ `&#x2603;` เพื่อดูสิ่งที่ผู้รับเห็นจริง ๆ
  • สร้างสแนปช็อตที่ปลอดภัยสำหรับ CMS — เข้ารหัส `'` และ `"` เพื่อไม่ให้คอลัมน์ฐานข้อมูลทำให้เกิดข้อผิดพลาดในบริบท SQL หรือ HTML
  • ดีบักรายงาน XSS — ยกเลิกการเข้ารหัสข้อมูลที่น่าสงสัยเพื่อกู้คืนข้อมูลต้นฉบับที่เครื่องมือรักษาความปลอดภัยระบุไว้

เมื่อใดที่คุณต้องการการเข้ารหัส HTML entity?

เมื่อข้อความที่ผู้ใช้ป้อนถูกแสดงใน HTML อักขระเช่น `<` และ `>` ต้องถูกเข้ารหัสเป็น `&lt;` และ `&gt;` เพื่อหลีกเลี่ยงการตีความเป็นแท็ก การข้ามสิ่งนี้เป็นสาเหตุหลักของช่องโหว่ XSS เครื่องมือจะเข้ารหัสอักขระที่ไม่ปลอดภัยใน HTML ห้าตัวหลักบวกกับ Unicode ใด ๆ ที่คุณเลือกจะเข้ารหัส

Numeric entities (`&#38;`, `&#x26;`) ใช้งานได้ในทุกบริบทของ HTML Named entities (`&amp;`, `&copy;`) อ่านง่ายกว่าแต่ใช้งานได้เฉพาะใน HTML — ตัวแปล XML ไม่รู้จักชื่อ HTML ทั้งหมด

ตัวอย่าง

ข้อมูลนำเข้าผลลัพธ์
<script>alert('hi')</script>&lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt;
© 2024 — Wenee&copy; 2024 &mdash; Wenee

คำถามที่พบบ่อย

อักขระใดบ้างที่ต้องเข้ารหัส?

อย่างน้อย: `<`, `>`, `&`, `"`, และ `'`. การเข้ารหัสมากขึ้น (เช่น ทุกอย่างที่ไม่ใช่ ASCII) ไม่มีอันตรายแต่ทำให้ผลลัพธ์ใหญ่ขึ้น

Named หรือ numeric entities อันไหนดีกว่ากัน?

Named (`&amp;`) อ่านง่ายกว่าใน HTML; numeric (`&#38;`) ใช้งานได้ทั้งใน HTML และ XML เลือก numeric เพื่อความปลอดภัยข้ามรูปแบบ

การเข้ารหัส HTML entity เหมือนกับการเข้ารหัส URL หรือไม่?

ไม่ — HTML entities ใช้ไวยากรณ์ `&...;` สำหรับบริบท HTML การเข้ารหัส URL ใช้ `%XX` สำหรับบริบท URL พวกเขาทำหน้าที่แตกต่างกัน

สิ่งนี้ป้องกัน XSS ได้หรือไม่?

การเข้ารหัสเนื้อหาข้อความในผลลัพธ์ HTML ป้องกันช่องทาง XSS ที่พบบ่อยที่สุด บริบทอื่น ๆ (ค่าคุณลักษณะ สตริง JavaScript, CSS) ต้องมีกฎการเข้ารหัสของตนเอง

ข้อความของฉันถูกส่งไปที่ไหนหรือไม่?

ไม่ การเข้ารหัสและการถอดรหัสเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณ