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

การแยกส่วน URL: ที่อยู่เว็บประกอบด้วยส่วนใดบ้าง

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

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