Pусскoязычногo прогрaммиста будeт обмaнуть всe же нe так легkо (нaвернякa мнoгиe стaлкивались с тeм, что клaвиша русскoй «с» совпадаeт c английской «c»).
Да, на «k» mimic спалился(хотя предполагаю это специально сделано в качестве подсказки, т.к. заменена только одна буква) — английская и русская визуально слегка отличаются.
Решил проверить — есть ли еще подмены? И оказалось что почти половина букв в комментарии заменена на омоглифы.
Использовал это для предотвращения xss. В запрещённых тэгах символы менялись как раз на русские, что вызывало множество часов праведного гнева тех кто пытался эти атаки провести. Весь код вроде на месте, а не работает.
На одном из рабочих мест:
— Обнаруживал в строковых литералах безразмерные юникодные символы (т.о литерал который выглядит так-же, не равнялся исходному), из-за чего выборка из словаря по такому-же литералу не давала результата.
— Чуть более весёлым был момент, из-за которого текстовый файл (C# исходник) гит воспринимал как бинарный — в конце одной из строк оказался нулевой байт.
Все проще. Ищем символы, которые выходят за диапозон ASCII, затем смотрим предварительно составленный словарь перекодировки ";" => ";". Для этого также можно пройтись по тексту и найти все странные символы, после чего составить словарь. Если в коде есть русский или любой другой язык, то диапозн этих символов также исключаем, как и ASCII.
Ещё проще — если символ выпадает за рамки стандартных языковых — забиваем на него. Если в слове буквы на разных языках и можно легко привести их в нормальный вид (русская\английская с), то делаем это. Если нельзя, то выкидываем слово из полнотекстового индекса или помечаем этот кусок и отправляем его тому от кого он пришел с требованием исправить.
Mimic: вредоносный скрипт, который портит нервы программистам