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

Переопределения направления

RIGHT-TO-LEFT OVERRIDE (U+202E)

Невидимый управляющий символ, который заставляет выкладывать все последующие символы справа налево, независимо от того, к какой письменности они относятся.

Кодовая позиция
U+202E
Удаляется по умолчанию
Да
Управляющий параметр
Параметр не нужен
Может нести нагрузку
Нет

Откуда он берётся

Из законного текста — почти никогда. Известность ему принесла атака с переопределением направления в имени файла: `invoice‮fdp.exe` показывается как `invoiceexe.pdf`, и пользователь дважды щёлкает по исполняемому файлу, думая, что открывает документ.

Почему это важно

Он меняет то, что видит читатель, не меняя того, что читает компьютер. Это и есть определение подменяющего символа: показанный порядок и логический расходятся, поэтому имя файла, ссылку или идентификатор в коде можно выдать за что-то другое.

До и после

ДоinvoiceU+202Efdp.exe
Послеinvoicefdp.exe

До чистки большинство программ показывает это как «invoiceexe.pdf». Байты такого никогда не говорили.

Символ показан подписанной плашкой, чтобы было видно, где он стоит. В вашем тексте он не рисует ровно ничего.

Когда он уместен

В прозе — фактически никогда. Правильный двунаправленный текст получается из самих символов по алгоритму bidi, а там, где явная подсказка всё же нужна, современный и безопасный выбор — изоляты (U+2066–U+2069).

Как его удалить

Базовый проход удаляет его в любом окружении, и оставить его нельзя ничем. Все пять символов вложения и переопределения Ghostchars трактует одинаково.

Это водяной знак ИИ?

Не водяной знак

Нет. Это инструмент подмены, а не отметка о происхождении. Если вы нашли такой символ в имени файла, в названии пакета или в исходнике, считайте его враждебным, а не курьёзным.

Никак не связан с машинно сгенерированным текстом. Он приходит из программы, с клавиатуры или от человека.

Вопросы

Что за атака с переопределением направления в имени файла?

U+202E внутри имени файла разворачивает отображение всего, что идёт после него, и исполняемый файл можно показать с расширением документа. Файл на диске не меняется — лжёт только отрисовка.

Важно ли это в исходном коде?

Да. Bidi-символы в комментариях и строковых литералах могут заставить проверенный код выглядеть не так, как он компилируется. Большинство компиляторов теперь на них предупреждает.

Есть ли причина его оставить?

В тексте, который вы чистите, — нет. Настоящему двунаправленному тексту он не нужен, а изоляты делают ту же работу, не переставляя ничего лишнего.

Проверьте свой текст

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

Проверьте свой текстВсе символы