Unicode homoglyph: ký tự nhìn giống nhau nhưng không giống nhau
Nhận biết ký tự giả mạo trong tên miền, tài khoản, mã và văn bản sao chép.
Trả lời nhanh: Homoglyph là các ký tự có hình thức giống hoặc gần giống nhau nhưng mang code point khác, chẳng hạn “a” Latin và “а” Cyrillic. Chúng có thể làm so sánh chuỗi thất bại hoặc bị lợi dụng để giả mạo tên miền và tài khoản.
Ví dụ khó nhận ra bằng mắt
Chữ a Latin là U+0061, còn chữ а Cyrillic là U+0430. Trong nhiều font, chúng gần như giống hệt. Chuỗi “paypal” có thể bị thay một vài ký tự bằng bảng chữ khác nhưng vẫn trông quen thuộc khi đọc nhanh.
Trước
a — LATIN SMALL LETTER A — U+0061
Sau
а — CYRILLIC SMALL LETTER A — U+0430
Chuẩn hóa không giải quyết mọi homoglyph
NFC hoặc NFKC sửa một số biểu diễn tương đương và tương thích, nhưng không biến mọi ký tự Cyrillic thành Latin vì chúng là chữ hợp lệ trong ngôn ngữ khác. Phát hiện cần xem script, code point và ngữ cảnh sử dụng.
Cách kiểm tra chuỗi đáng ngờ
Dán chuỗi vào công cụ Chuẩn hóa Unicode và xem tên/code point từng ký tự. Đặc biệt cẩn thận với tên miền, địa chỉ ví, username và mã nhận từ nguồn không tin cậy. Không đăng nhập hoặc chuyển tiền chỉ dựa vào hình thức chuỗi.
Câu hỏi thường gặp
Homoglyph có phải lúc nào cũng độc hại?
Không. Nhiều ngôn ngữ dùng các ký tự hợp lệ trông giống nhau. Rủi ro xuất hiện khi chúng được trộn để gây nhầm lẫn.
Xóa dấu có phát hiện được homoglyph không?
Không. Xóa dấu không đổi chữ Cyrillic thành Latin. Cần kiểm tra code point hoặc dùng cơ chế phát hiện script.