บทความทั้งหมด

Punycode: โดเมนสากลทำงานใน DNS อย่างไร

ไทยมีโดเมนระดับบนสุดที่เป็นภาษาไทยล้วนคือ .ไทย ซึ่งในระบบ 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-- ดิบแทนการถอดรหัส

ลองใช้เครื่องมือ