Normalizacja mylących znaków do bezpiecznego tekstu
Normalizacja mylących znaków polega na zastąpieniu każdego sobowtóra zwykłym znakiem, który naśladuje, tak aby dwa identycznie wyglądające ciągi były równe także przy porównaniu. Warto ją wykonać przed porównywaniem nazw użytkowników, sprawdzaniem list blokad lub usuwaniem zduplikowanych identyfikatorów.
Przykład krok po kroku
- Dane wejściowe
- Cоnfig file: аdmin2, Noёl, café
- Wykryte systemy pisma
- łacińskie (Latn), cyrylica (Cyrl)
- Oznaczone znaki
- 7
| Pozycja | Znak | Punkt kodowy | Pismo | Zamiennik | Reguła |
|---|---|---|---|---|---|
| 0 | C | U+FF23 | łacińskie | C | Normalizacja NFKC |
| 1 | о | U+043E | cyrylica | o | Tabela mylących znaków |
| 7 | fi | U+FB01 | łacińskie | fi | Normalizacja NFKC |
| 10 | : | U+FF1A | wspólne | : | Tabela mylących znaków |
| 12 | а | U+0430 | cyrylica | a | Tabela mylących znaków |
| 17 | 2 | U+FF12 | wspólne | 2 | Tabela mylących znaków |
| 22 | ё | U+0451 | cyrylica | ë | Tabela mylących znaków |
- Zachowaj czytelny Unicode
- Config file: admin2, Noël, café
- Ścisła rezerwa ASCII
- Config file: admin2, Noel, café
Jak to działa
- Znane sobowtóry są najpierw zastępowane według wbudowanej tabeli. Znaki spoza tabeli są normalizowane za pomocą NFKC, która sprowadza formy pełnej szerokości, ligatury i inne znaki zgodności do ich standardowych odpowiedników.
- Tryb „Zachowaj czytelny Unicode” zostawia literę ze znakiem diakrytycznym, jeśli tabela ją definiuje, np. cyrylickie ё → ë. Tryb „Ścisła rezerwa ASCII” używa zamiast tego zwykłej litery ASCII (ё → e).
- Litery, których nie ma w tabeli i których NFKC nie zmienia, pozostają bez zmian, więc café zachowuje akcent w obu trybach. Znormalizowany tekst to klucz do porównań, a nie werdykt bezpieczeństwa: przechowuj też oryginał i sprawdzaj oznaczone znaki.
Konwersja jest najlepszym rozwiązaniem: mapowane elementy mylące i składanie NFKC są deterministyczne, ale niektóre prawidłowe Unicode nie zostaną oznaczone.
Twój tekst
Wklej lub pisz — wyniki są aktualizowane w trakcie pisania (lekko odrzucane w przypadku długiego wprowadzania).
zeskanowano 30 znaków
7 podejrzanych
Ścisła rezerwa ASCII
Oryginał (zaznaczono podejrzane znaki)
Podejrzane znaki w widoku oryginalnym są podkreślone i oznaczone jako „podejrzane”. oprócz podkreślenia koloru.
suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
Oczyszczone wyjście
Analiza znaków
| Indeks (od 0) | Oryginał | Zamiennik | Punkt kodowy | Powód |
|---|---|---|---|---|
| 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. |