Tiếng Việt có dấu khiến một đường dẫn ngắn gọn như "/tin-tức" phình to gấp nhiều lần khi mã hóa — hiểu vì sao giúp việc đọc log server hay chia sẻ link qua Zalo bớt khó hiểu hơn.
Các phần chính của URL
- Scheme —
https://, xác định cách kết nối đến tài nguyên. - Host —
vidu.com.vn, tên miền của server. - Port — tùy chọn, mặc định là 443 cho HTTPS.
- Path —
/tin-tức/công-nghệ, có thể chứa dấu tiếng Việt. - Query string — sau dấu
?, thường mang tham sốutm_sourcetừ chiến dịch quảng cáo. - Fragment — sau dấu
#, chỉ trình duyệt xử lý.
Vì sao "tin tức" biến thành một chuỗi phần trăm dài dằng dặc
Các dấu thanh và nguyên âm có dấu trong tiếng Việt (ư, ơ, ế, ộ...) không nằm trong tập ký tự an toàn của URL, nên mỗi ký tự trước tiên được mã hóa thành nhiều byte UTF-8, rồi mỗi byte lại trở thành một chuỗi kiểu %E1%BB%81. Một từ tiếng Việt ngắn khi mã hóa có thể dài gấp 5-6 lần bản gốc, khiến link chia sẻ qua Zalo hay Messenger trông dài bất thường so với tiêu đề bài viết.
Link Zalo cũng tuân theo cùng một cấu trúc
Một liên kết chia sẻ kiểu https://zalo.me/g/abcxyz?utm_source=share vẫn tuân theo đúng cấu trúc scheme-host-path-query như mọi URL khác, chỉ khác là path thường là một mã định danh ngắn thay vì tên bài viết. Tách URL ra từng phần giúp xác định nhanh phần nào là mã nhóm/kênh thật sự và phần nào chỉ là tham số theo dõi được thêm vào khi chia sẻ.
Vì sao cần điều này
- Chia nhỏ một URL phức tạp thành các thành phần để gỡ lỗi hoặc ghi log.
- Giải mã một đường dẫn tiếng Việt dài thành văn bản đọc được.
- Xây dựng một URL đúng bằng lập trình mà không mắc lỗi mã hóa.
Thủ đoạn lừa đảo phishing với userinfo
Một URL như https://accounts.google.com@evil.com/ trông có vẻ dẫn đến accounts.google.com, nhưng thực ra trình duyệt sẽ mở evil.com — phần trước ký hiệu @ chỉ là tên đăng nhập (userinfo), không phải host. Vì vậy các trình duyệt hiện đại cố gắng làm nổi bật host thật một cách trực quan.