Перейти к основному содержимому

Нормализация похожих символов в безопасный текст

Нормализация похожих символов заменяет каждого двойника обычным символом, который он имитирует, чтобы две одинаково выглядящие строки и при сравнении считались равными. Делайте это перед сравнением имён пользователей, проверкой по чёрным спискам или удалением дублирующихся идентификаторов.

Разбор примера

Ввод
Cоnfig file: аdmin2, Noёl, café
Найденные письменности
латиница (Latn), кириллица (Cyrl)
Отмечено символов
7
ПозицияСимволКодовая точкаПисьменностьЗаменаПравило
0CU+FF23латиницаCНормализация NFKC
1оU+043EкириллицаoТаблица похожих символов
7fiU+FB01латиницаfiНормализация NFKC
10:U+FF1Aобщепринятая:Таблица похожих символов
12аU+0430кириллицаaТаблица похожих символов
172U+FF12общепринятая2Таблица похожих символов
22ёU+0451кириллицаëТаблица похожих символов
Сохранить читаемый Юникод
Config file: admin2, Noël, café
Строгий резервный вариант ASCII
Config file: admin2, Noel, café

Как это работает

  • Сначала известные двойники заменяются по встроенной таблице. Символы вне таблицы нормализуются с помощью NFKC, которая приводит полноширинные формы, лигатуры и другие символы совместимости к стандартным эквивалентам.
  • Режим «Сохранить читаемый Юникод» оставляет букву с диакритикой, если она задана в таблице, например кириллическая ё → ë. «Строгий резервный вариант ASCII» использует простую ASCII-букву (ё → e).
  • Буквы, которых нет в таблице и которые не меняет NFKC, сохраняются, поэтому café сохраняет акцент в обоих режимах. Нормализованный текст — это ключ для сравнения, а не вердикт безопасности: храните и оригинал и проверяйте отмеченные символы.

Преобразование выполняется с максимальной эффективностью: отображаемые путаные элементы и свертывание NFKC являются детерминированными, но некоторые допустимые Unicode не будут помечены.

Ваш текст

Вставить или ввести — результаты обновляются по мере ввода (слегка подпрыгивают при длительном вводе).

проверено 30 символов
7 подозрительных
Строгий резервный вариант ASCII
Режим преобразования

Строгий режим ASCII агрессивно заменяет известные аналоги на ASCII. Он может изменить допустимый нелатинский текст, когда символ находится в связанной карте или в свернутом NFKC.

Оригинал (отмечены подозрительные символы)

Подозрительные символы в исходном виде подчеркнуты и помечены как «подозрительно». в дополнение к выделению цвета.

suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
Очищенный вывод
Анализ символов
Индекс (отсчет от 0)ОригиналЗаменаКодовая точкаПричина
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.

Другие руководства