Переопределения направления
RIGHT-TO-LEFT OVERRIDE (U+202E)
Невидимый управляющий символ, который заставляет выкладывать все последующие символы справа налево, независимо от того, к какой письменности они относятся.
- Кодовая позиция
U+202E- Категория
- Переопределения направления
- Удаляется по умолчанию
- Да
- Управляющий параметр
- Параметр не нужен
- Может нести нагрузку
- Нет
Откуда он берётся
Из законного текста — почти никогда. Известность ему принесла атака с переопределением направления в имени файла: `invoicefdp.exe` показывается как `invoiceexe.pdf`, и пользователь дважды щёлкает по исполняемому файлу, думая, что открывает документ.
Почему это важно
Он меняет то, что видит читатель, не меняя того, что читает компьютер. Это и есть определение подменяющего символа: показанный порядок и логический расходятся, поэтому имя файла, ссылку или идентификатор в коде можно выдать за что-то другое.
До и после
До чистки большинство программ показывает это как «invoiceexe.pdf». Байты такого никогда не говорили.
Символ показан подписанной плашкой, чтобы было видно, где он стоит. В вашем тексте он не рисует ровно ничего.
Когда он уместен
В прозе — фактически никогда. Правильный двунаправленный текст получается из самих символов по алгоритму bidi, а там, где явная подсказка всё же нужна, современный и безопасный выбор — изоляты (U+2066–U+2069).
Как его удалить
Базовый проход удаляет его в любом окружении, и оставить его нельзя ничем. Все пять символов вложения и переопределения Ghostchars трактует одинаково.
Это водяной знак ИИ?
Не водяной знак
Нет. Это инструмент подмены, а не отметка о происхождении. Если вы нашли такой символ в имени файла, в названии пакета или в исходнике, считайте его враждебным, а не курьёзным.
Никак не связан с машинно сгенерированным текстом. Он приходит из программы, с клавиатуры или от человека.
Вопросы
Что за атака с переопределением направления в имени файла?
U+202E внутри имени файла разворачивает отображение всего, что идёт после него, и исполняемый файл можно показать с расширением документа. Файл на диске не меняется — лжёт только отрисовка.
Важно ли это в исходном коде?
Да. Bidi-символы в комментариях и строковых литералах могут заставить проверенный код выглядеть не так, как он компилируется. Большинство компиляторов теперь на них предупреждает.
Есть ли причина его оставить?
В тексте, который вы чистите, — нет. Настоящему двунаправленному тексту он не нужен, а изоляты делают ту же работу, не переставляя ничего лишнего.
Проверьте свой текст
Вставьте что угодно в инструмент очистки, чтобы увидеть каждый скрытый символ: позицию, кодовую позицию и то, что произойдёт с каждым из них. Ничего никуда не отправляется.