Przejdź do głównej treści

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
PozycjaZnakPunkt kodowyPismoZamiennikReguła
0CU+FF23łacińskieCNormalizacja NFKC
1оU+043EcyrylicaoTabela mylących znaków
7fiU+FB01łacińskiefiNormalizacja NFKC
10:U+FF1Awspólne:Tabela mylących znaków
12аU+0430cyrylicaaTabela mylących znaków
172U+FF12wspólne2Tabela mylących znaków
22ёU+0451cyrylicaë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
Tryb konwersji

Ścisły tryb ASCII agresywnie zastępuje znane elementy podobne do ASCII. Może zmienić prawidłowy tekst inny niż łaciński, gdy postać znajduje się na dołączonej mapie lub złożonej w NFKC.

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łZamiennikPunkt kodowyPowód
0CCU+FF23NFKC normalization changed this character (compatibility or width folding).
1оoU+043ENon-ASCII confusable mapped to a safer Latin ASCII equivalent.
2nnU+006ENot flagged as a confusable or compatibility character.
3ffU+0066Not flagged as a confusable or compatibility character.
4iiU+0069Not flagged as a confusable or compatibility character.
5ggU+0067Not flagged as a confusable or compatibility character.
6 U+0020Not flagged as a confusable or compatibility character.
7fifiU+FB01NFKC normalization changed this character (compatibility or width folding).
8llU+006CNot flagged as a confusable or compatibility character.
9eeU+0065Not flagged as a confusable or compatibility character.
10::U+FF1ANon-ASCII confusable mapped to a safer Latin ASCII equivalent.
11 U+0020Not flagged as a confusable or compatibility character.
12аaU+0430Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
13ddU+0064Not flagged as a confusable or compatibility character.
14mmU+006DNot flagged as a confusable or compatibility character.
15iiU+0069Not flagged as a confusable or compatibility character.
16nnU+006ENot flagged as a confusable or compatibility character.
1722U+FF12Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
18,,U+002CNot flagged as a confusable or compatibility character.
19 U+0020Not flagged as a confusable or compatibility character.
20NNU+004ENot flagged as a confusable or compatibility character.
21ooU+006FNot flagged as a confusable or compatibility character.
22ёeU+0451Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
23llU+006CNot flagged as a confusable or compatibility character.
24,,U+002CNot flagged as a confusable or compatibility character.
25 U+0020Not flagged as a confusable or compatibility character.
26ccU+0063Not flagged as a confusable or compatibility character.
27aaU+0061Not flagged as a confusable or compatibility character.
28ffU+0066Not flagged as a confusable or compatibility character.
29ééU+00E9Not flagged as a confusable or compatibility character.

Więcej poradników