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.

7 phút đọc•Cập nhật

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.

Hai ký tự giống nhau được soi để lộ mã Unicode khác nhau

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.

Hai chữ a khác mã

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.

Nguồn tham khảo