Как стать автором
Обновить

Комментарии 10

А разве после RLI сам return не будет перевернут при отображении ("nruter")? Он же не один символ, а много.

Вставил в текстовый файл символ LRI (https://www.compart.com/en/unicode/U+2066).
Заголовок спойлера
00000000 74 68 69 73 20 69 73 e2 81 a6 20 72 65 74 75 72 |this is... retur|
00000010 6e 0a |n.|


Не смог найти редактор, который его обрабатывает как указано. Все игнорируют, pycharm делает так:

Тормознул сразу. Вы же вставили LRI, а надо было RLI (U+2067), это разные символы. Оттого и нет реакции, что LRI в left-to-right тексте ничего не меняет.

Неужели кто-то ревьюирует код без подсветки? А подсветка-то наверное все же подсвечивать будет не по тому, как отображается, а по тому, как в коде следует. Хотя идея запрещать всякие левые символы в коде/идентификаторах здравая.

Да ничего она не здравая, это синдром вахтёра, всё запрещать. Почему бы каким-нибудь арабам на писать переменные или комментарии на своём, на арабском, справа налево?

Правильный фикс — нельзя переключать на RTL внутри строки или комментария , а обратно на LTR внутри другой строки или комментария. Внутри той же строки или комментария — можно. Такой фикс разрешит все нормальные варианты использования и отсечёт эксплоиты

Непонятно, нафига вообще указывать, что вам надо что-то переключать. Арабский и так справа-налево пишется, зачем это еще дополнительно указывать? По самой букве этого не видно?

Ну, есть же в Unicode символы для переключения (202B), надо что-то с ними делать. А так да, по букве видно. Вот пример без всяких дополнительных символов.

Рассуждения Russ Cox о Trojan source (tl;dr; - всё не страшно и, более того, не ново) https://research.swtch.com/trojan

Интересно, в каких-то языках программирования такие спецсимволы вообще могут быть где-то кроме комментариев?

в строках, легко. std::cout << "рим, молаШ";

Зарегистрируйтесь на Хабре, чтобы оставить комментарий