Chuẩn hóa ký tự dễ nhầm lẫn thành văn bản an toàn
Chuẩn hóa ký tự dễ nhầm lẫn nghĩa là thay mỗi ký tự giả mạo bằng ký tự thông thường mà nó bắt chước, để hai chuỗi trông giống nhau cũng bằng nhau khi so sánh. Hãy làm việc này trước khi so sánh tên người dùng, đối chiếu danh sách chặn hoặc loại bỏ mã định danh trùng lặp.
Ví dụ minh họa
- Đầu vào
- Cоnfig file: аdmin2, Noёl, café
- Hệ chữ được phát hiện
- Chữ La tinh (Latn), Chữ Kirin (Cyrl)
- Ký tự bị đánh dấu
- 7
| Vị trí | Ký tự | Điểm mã | Hệ chữ | Ký tự thay thế | Quy tắc |
|---|---|---|---|---|---|
| 0 | C | U+FF23 | Chữ La tinh | C | Chuẩn hóa NFKC |
| 1 | о | U+043E | Chữ Kirin | o | Bảng ký tự dễ nhầm |
| 7 | fi | U+FB01 | Chữ La tinh | fi | Chuẩn hóa NFKC |
| 10 | : | U+FF1A | Chung | : | Bảng ký tự dễ nhầm |
| 12 | а | U+0430 | Chữ Kirin | a | Bảng ký tự dễ nhầm |
| 17 | 2 | U+FF12 | Chung | 2 | Bảng ký tự dễ nhầm |
| 22 | ё | U+0451 | Chữ Kirin | ë | Bảng ký tự dễ nhầm |
- Bảo toàn Unicode có thể đọc được
- Config file: admin2, Noël, café
- Dự phòng ASCII nghiêm ngặt
- Config file: admin2, Noel, café
Cách hoạt động
- Các ký tự giả mạo đã biết được thay trước theo bảng tích hợp. Ký tự ngoài bảng được chuẩn hóa bằng NFKC, giúp đưa dạng toàn độ rộng, chữ ghép và các ký tự tương thích khác về dạng chuẩn tương ứng.
- Chế độ Bảo toàn Unicode có thể đọc được giữ lại chữ có dấu khi bảng có định nghĩa, ví dụ ё Kirin → ë. Chế độ Dự phòng ASCII nghiêm ngặt dùng chữ ASCII thường thay thế (ё → e).
- Các chữ không có trong bảng và không bị NFKC thay đổi được giữ nguyên, nên café vẫn giữ dấu ở cả hai chế độ. Văn bản đã chuẩn hóa là khóa để so sánh, không phải kết luận về bảo mật: hãy lưu cả bản gốc và xem xét các ký tự bị đánh dấu.
Chuyển đổi là nỗ lực tốt nhất: các sự nhầm lẫn được ánh xạ và việc gấp NFKC là mang tính quyết định, nhưng một số Unicode hợp pháp sẽ không được gắn cờ.
Văn bản của bạn
Dán hoặc nhập - kết quả cập nhật khi bạn nhập (được gỡ lỗi nhẹ khi nhập dài).
đã quét 30 ký tự
7 đáng ngờ
Dự phòng ASCII nghiêm ngặt
Bản gốc (đã đánh dấu các ký tự đáng ngờ)
Các ký tự đáng ngờ trong chế độ xem ban đầu được gạch chân và gắn nhãn “nghi ngờ”. Ngoài màu sắc nổi bật.
suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
Đầu ra được làm sạch
Phân tích ký tự
| Chỉ số (dựa trên 0) | Bản gốc | thay thế | Điểm mã | Lý do |
|---|---|---|---|---|
| 0 | C | C | U+FF23 | NFKC normalization changed this character (compatibility or width folding). |
| 1 | о | o | U+043E | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 2 | n | n | U+006E | Not flagged as a confusable or compatibility character. |
| 3 | f | f | U+0066 | Not flagged as a confusable or compatibility character. |
| 4 | i | i | U+0069 | Not flagged as a confusable or compatibility character. |
| 5 | g | g | U+0067 | Not flagged as a confusable or compatibility character. |
| 6 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 7 | fi | fi | U+FB01 | NFKC normalization changed this character (compatibility or width folding). |
| 8 | l | l | U+006C | Not flagged as a confusable or compatibility character. |
| 9 | e | e | U+0065 | Not flagged as a confusable or compatibility character. |
| 10 | : | : | U+FF1A | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 11 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 12 | а | a | U+0430 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 13 | d | d | U+0064 | Not flagged as a confusable or compatibility character. |
| 14 | m | m | U+006D | Not flagged as a confusable or compatibility character. |
| 15 | i | i | U+0069 | Not flagged as a confusable or compatibility character. |
| 16 | n | n | U+006E | Not flagged as a confusable or compatibility character. |
| 17 | 2 | 2 | U+FF12 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 18 | , | , | U+002C | Not flagged as a confusable or compatibility character. |
| 19 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 20 | N | N | U+004E | Not flagged as a confusable or compatibility character. |
| 21 | o | o | U+006F | Not flagged as a confusable or compatibility character. |
| 22 | ё | e | U+0451 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 23 | l | l | U+006C | Not flagged as a confusable or compatibility character. |
| 24 | , | , | U+002C | Not flagged as a confusable or compatibility character. |
| 25 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 26 | c | c | U+0063 | Not flagged as a confusable or compatibility character. |
| 27 | a | a | U+0061 | Not flagged as a confusable or compatibility character. |
| 28 | f | f | U+0066 | Not flagged as a confusable or compatibility character. |
| 29 | é | é | U+00E9 | Not flagged as a confusable or compatibility character. |