ไทยมีโดเมนระดับบนสุดที่เป็นภาษาไทยล้วนคือ .ไทย ซึ่งในระบบ DNS จริงมีชื่อว่า xn--o3cw4h — ตัวอย่างที่ชัดเจนว่าทำไมการเข้ารหัส Punycode จึงจำเป็นแม้กระทั่งสำหรับชื่อโดเมนระดับบนสุดเอง ไม่ใช่แค่ชื่อโดเมนย่อย
วรรณยุกต์และสระลอยทำให้การเข้ารหัสซับซ้อนขึ้น
อักษรไทยมีสระและวรรณยุกต์ที่วางอยู่เหนือหรือใต้พยัญชนะ (เช่น ่ ้ ๊ ๋ ) ซึ่งแต่ละตัวเป็นอักขระ Unicode แยกต่างหากที่มีตำแหน่งของตัวเอง Punycode ต้องเข้ารหัสตำแหน่งและรหัสของทุกอักขระเหล่านี้แยกกัน แม้ว่าตาเราจะเห็นเป็นสระหรือวรรณยุกต์ที่ "ติด" อยู่กับพยัญชนะตัวเดียวก็ตาม
ทำไมไม่เปลี่ยน DNS ให้รองรับ UTF-8 ไปเลย
การเปลี่ยน DNS ให้รองรับ UTF-8 โดยตรงจะต้องอัปเดตเซิร์ฟเวอร์ชื่อโดเมนทุกเครื่องทั่วโลกพร้อมกัน Punycode หลีกเลี่ยงปัญหานี้ได้ด้วยการให้เพียงเบราว์เซอร์และผู้รับจดทะเบียนเท่านั้นที่ต้องเข้าใจการเข้ารหัส ขณะที่โครงสร้างพื้นฐาน DNS เบื้องหลังยังคงเห็นแค่ ASCII
กรณีการใช้งานทั่วไป
- ตรวจสอบว่าโดเมนจริงใดซ่อนอยู่หลังสตริง
xn--...ที่พบในอีเมลหรือลิงก์ - แปลงโดเมนภาษาไทยเป็นรูปแบบ Punycode ก่อนตั้งค่าในแผงควบคุม DNS ที่รองรับเฉพาะ ASCII
- วินิจฉัยปัญหา IDN ในใบรับรองหรือที่อยู่อีเมล
การโจมตีแบบ Homoglyph เป็นภัยคุกคามที่แท้จริง
ตัวอักษรซีริลลิก "а" แยกไม่ออกจากตัวอักษรละติน "a" ในฟอนต์ส่วนใหญ่ ผู้โจมตีใช้ประโยชน์จากสิ่งนี้ในการจดทะเบียนโดเมนอย่าง "аpple.com" ซึ่งถูกเข้ารหัสด้วย Punycode เป็นสตริง xn-- ที่ไม่ซ้ำกัน แต่มองดูเหมือนแบรนด์จริง เมื่อป้ายชื่อผสมชุดตัวอักษรอย่างน่าสงสัย เบราว์เซอร์รุ่นใหม่จะแสดงรูปแบบ xn-- ดิบแทนการถอดรหัส