HTML Entities
เข้ารหัสและถอดรหัสอักขระพิเศษและ entities ของ HTML
กรณีการใช้งาน
- เข้ารหัสเนื้อหาของผู้ใช้เพื่อความปลอดภัยใน HTML — แปลง `<script>` เป็น `<script>` ก่อนแทรกลงในเทมเพลต
- อ่านแหล่งที่มาของอีเมล HTML ดิบ — ถอดรหัส `&` และ `☃` เพื่อดูสิ่งที่ผู้รับเห็นจริง ๆ
- สร้างสแนปช็อตที่ปลอดภัยสำหรับ CMS — เข้ารหัส `'` และ `"` เพื่อไม่ให้คอลัมน์ฐานข้อมูลทำให้เกิดข้อผิดพลาดในบริบท SQL หรือ HTML
- ดีบักรายงาน XSS — ยกเลิกการเข้ารหัสข้อมูลที่น่าสงสัยเพื่อกู้คืนข้อมูลต้นฉบับที่เครื่องมือรักษาความปลอดภัยระบุไว้
เมื่อใดที่คุณต้องการการเข้ารหัส HTML entity?
เมื่อข้อความที่ผู้ใช้ป้อนถูกแสดงใน HTML อักขระเช่น `<` และ `>` ต้องถูกเข้ารหัสเป็น `<` และ `>` เพื่อหลีกเลี่ยงการตีความเป็นแท็ก การข้ามสิ่งนี้เป็นสาเหตุหลักของช่องโหว่ XSS เครื่องมือจะเข้ารหัสอักขระที่ไม่ปลอดภัยใน HTML ห้าตัวหลักบวกกับ Unicode ใด ๆ ที่คุณเลือกจะเข้ารหัส
Numeric entities (`&`, `&`) ใช้งานได้ในทุกบริบทของ HTML Named entities (`&`, `©`) อ่านง่ายกว่าแต่ใช้งานได้เฉพาะใน HTML — ตัวแปล XML ไม่รู้จักชื่อ HTML ทั้งหมด
ตัวอย่าง
| ข้อมูลนำเข้า | ผลลัพธ์ |
|---|---|
| <script>alert('hi')</script> | <script>alert('hi')</script> |
| © 2024 — Wenee | © 2024 — Wenee |
คำถามที่พบบ่อย
อักขระใดบ้างที่ต้องเข้ารหัส?
อย่างน้อย: `<`, `>`, `&`, `"`, และ `'`. การเข้ารหัสมากขึ้น (เช่น ทุกอย่างที่ไม่ใช่ ASCII) ไม่มีอันตรายแต่ทำให้ผลลัพธ์ใหญ่ขึ้น
Named หรือ numeric entities อันไหนดีกว่ากัน?
Named (`&`) อ่านง่ายกว่าใน HTML; numeric (`&`) ใช้งานได้ทั้งใน HTML และ XML เลือก numeric เพื่อความปลอดภัยข้ามรูปแบบ
การเข้ารหัส HTML entity เหมือนกับการเข้ารหัส URL หรือไม่?
ไม่ — HTML entities ใช้ไวยากรณ์ `&...;` สำหรับบริบท HTML การเข้ารหัส URL ใช้ `%XX` สำหรับบริบท URL พวกเขาทำหน้าที่แตกต่างกัน
สิ่งนี้ป้องกัน XSS ได้หรือไม่?
การเข้ารหัสเนื้อหาข้อความในผลลัพธ์ HTML ป้องกันช่องทาง XSS ที่พบบ่อยที่สุด บริบทอื่น ๆ (ค่าคุณลักษณะ สตริง JavaScript, CSS) ต้องมีกฎการเข้ารหัสของตนเอง
ข้อความของฉันถูกส่งไปที่ไหนหรือไม่?
ไม่ การเข้ารหัสและการถอดรหัสเกิดขึ้นทั้งหมดในเบราว์เซอร์ของคุณ
