ภาษาไทยไม่มีการเว้นวรรคระหว่างคำ ทำให้เมื่อพิมพ์ข้อความไทยลงในแถบค้นหาแล้วถูกแปลงเป็น URL ผลลัพธ์มักเป็นสตริงเปอร์เซ็นต์ยาวเหยียดที่อ่านไม่ออก การแยกส่วน URL ช่วยถอดรหัสกลับมาเป็นข้อความที่อ่านได้อีกครั้ง
ส่วนประกอบหลักของ URL
- โปรโตคอล —
https://ระบุวิธีเชื่อมต่อกับรีซอร์ส - โฮสต์ —
example.co.thชื่อโดเมนของเซิร์ฟเวอร์ - พอร์ต — เป็นทางเลือก ค่าเริ่มต้นคือ 443 สำหรับ HTTPS
- พาธ —
/บทความ/เครือข่ายอาจมีอักษรไทยปนอยู่ - คิวรีสตริง — หลัง
?มักมีพารามิเตอร์utm_sourceจากแคมเปญโฆษณา - แฟรกเมนต์ — หลัง
#เบราว์เซอร์เท่านั้นที่ประมวลผล ไม่ถูกส่งไปเซิร์ฟเวอร์
ทำไมคำไทยสั้น ๆ ถึงกลายเป็นสตริงเปอร์เซ็นต์ยาวมาก
สระและวรรณยุกต์ในภาษาไทยไม่อยู่ในชุดอักขระที่ปลอดภัยของ URL แต่ละตัวอักษรจึงถูกเข้ารหัสเป็นหลายไบต์แบบ UTF-8 ก่อน แล้วแต่ละไบต์ค่อยกลายเป็นรูปแบบ %E0%B8%81 คำไทยสั้น ๆ เพียงคำเดียวจึงมักขยายเป็นสตริงยาวหลายสิบตัวอักษรหลังเข้ารหัส ซึ่งเป็นสาเหตุที่ลิงก์ที่แชร์ผ่าน LINE ดูยาวผิดปกติเมื่อเทียบกับข้อความต้นฉบับ
ไม่มีช่องว่างระหว่างคำ ยิ่งทำให้สับสน
เนื่องจากภาษาไทยเขียนติดกันโดยไม่เว้นวรรคระหว่างคำ เมื่อข้อความค้นหาถูกเข้ารหัสเป็นพาธหรือคิวรีสตริง จึงยากที่จะบอกด้วยตาเปล่าว่าเปอร์เซ็นต์ชุดไหนคือคำไหน ต่างจากภาษาที่เว้นวรรค การถอดรหัสด้วยเครื่องมือจึงจำเป็นมากกว่าการพยายามอ่านด้วยตาเปล่า
เหตุใดจึงจำเป็น
- แยกส่วนประกอบของ URL ที่ซับซ้อนเพื่อการดีบักหรือบันทึกล็อก
- ถอดรหัสสตริงเปอร์เซ็นต์ยาว ๆ กลับเป็นข้อความไทยที่อ่านได้
- สร้าง URL ด้วยโปรแกรมอย่างถูกต้องโดยไม่มีข้อผิดพลาดในการเข้ารหัส
กลลวงฟิชชิงด้วย userinfo
URL อย่าง https://accounts.google.com@evil.com/ ดูเหมือนจะพาไปที่ accounts.google.com แต่จริง ๆ แล้วเบราว์เซอร์จะเปิด evil.com — ส่วนก่อนเครื่องหมาย @ เป็นแค่ชื่อผู้ใช้ (userinfo) ไม่ใช่โฮสต์ ด้วยเหตุนี้เบราว์เซอร์รุ่นใหม่จึงพยายามเน้นโฮสต์จริงให้เห็นชัดเจน