Рубрика «Unicode» - 3

Из жизни с Kubernetes: Как HTTP-сервер испанцев не жаловал - 1

Представитель нашего клиента, стек приложений которого обитает в облаке от Microsoft (Azure), обратился с проблемой: с недавнего времени часть запросов некоторых клиентов из Европы стала завершаться ошибкой 400 (Bad Request). Все приложения написаны на .NET, развёрнуты в Kubernetes…Читать полностью »

Привет, Habr. Хочу поделиться с вами одной интересной задачей, которую многие из нас получали на собеседовании, но, вероятно, даже и не догадывались о том, что решаем ее неправильно.

Прежде всего — немного истории. Работая на должностях тимлида и техлида мне порой приходилось проводить собеседования, соответственно нужно подготовить несколько теоретически вопросов, ну и пару несложных задач, на решение которых не должно было бы уйти больше 2х-3х минут. Если с теорией все просто — мой любимый вопрос это: «чему равен typeof null?», по ответу сразу можно понять, кто сидит перед тобой, джун — просто правильно ответит, а претендент на сеньера, еще и объяснит почему. То с практикой — сложнее. Я долго не мог придумать нормальное задание, не изъезженное, типа fizz-buzz, а что-нибудь свое. По этому я на собеседованиях давал задания, которые сам проходил, устраиваясь на текущую работу. О первом из них и пойдет речь.
Читать полностью »

Никогда не слышали о нормализации Unicode? Вы не одиноки. Но об этом надо знать всем. Нормализация способна избавить вас от множества проблем. Рано или поздно нечто подобное тому, что показано на следующем рисунке, случается с любым разработчиком.

Когда «Zoë» !==«Zoë», или почему нужно нормализовывать Unicode-строки - 1

«Zoë» — это не «Zoë»
Читать полностью »

Заблуждения программистов об именах — с примерами - 1

В 2010 году Патрик Маккензи написал знаменитую статью «Заблуждения программистов об именах», перечислив 40 фактоидов, которые не всегда верны в отношении человеческих имён.

Думаете, программисты сели, подумали и изменили обработку имён в компьютерных системах? К сожалению, не совсем. Нас по-прежнему повсеместно просят заполнить онлайн-формы, которые предполагают обязательное наличие имени и фамилии (причём именно в таком порядке). Эти системы по-прежнему предполагают, что наши имена всегда можно записать символами алфавита, зачастую только ASCII.
Читать полностью »

Справа налево. Что такое dir=rtl и как приручить арабский язык - 1

Привет. Мы недавно перевели на арабский язык 2ГИС Онлайн, и хотим поделиться своим опытом адаптации интерфейса под RTL (right-to-left). Это будет актуально и для иврита, и для персидского языка.

Я разделю этот опыт на две статьи — теоретическую и практическую. Сегодня — больше про теорию. Я расскажу, зачем нам понадобилось переворачивать весь интерфейс, что для разработчика интерфейсов значит фраза «сделать арабскую версию» и как справиться с арабским языком, смешанным с английским. Особое внимание уделю алгоритму, по которому строится отображение текста смешанной направленности — unicode bidirectional algorithm.

Читать полностью »

image
Кадр из фильма “Матрица” (1999)

На фоне возможностей современных смартфонов легко забыть, что мобильная связь — это очень старая технология. Одна только концепция передачи коротких текстовых сообщений была разработана более 30 лет назад. Если бы люди занялись созданием SMS в 2018 году, то, вероятно, не стали бы ограничивать одно сообщение 160 символами (в 7-битной кодировке).

Связь наследует не только ограничения, заложенные при создании. Многие ошибки, скрытые и явные, ждут своего часа годами, начиная с далекого мобильного прошлого. Со временем к ним добавляются новые аппаратные или программные недочёты. Современный смартфон — это своего рода «кремниевое творение Франкенштейна», компоненты которого создаются сторонними компаниями, чей код не полностью контролируют Apple и Google.

В таких условиях не удивляет, что один из самых главных недостатков современной связи (а также мобильных приложений и железа) — это наличие простых уязвимостей, приводящих к выводу из строя различных устройств. Достаточно нескольких символов, чтобы буквально погасить экран самого современного гаджета стоимостью более $1000. Год за годом уязвимость эксплуатируется вновь и вновь. И сегодня мы подробнее рассмотрим, как это происходит.
Читать полностью »

Не хотите читать? Посмотрите демо.

Символы нулевой ширины — это непечатаемые управляющие символы, которые не отображаются большинством приложений. Н​апример, в э​то пред​ложение я вст​авил де​сять про​​белов н​улевой ширины, вы эт​о замет​или? (Подсказка: вставьте предложение в Diff Checker, чтобы увидеть местоположение символов!). Эти символы можно использовать как уникальные «отпечатки» текста для идентификации пользователей.

Осторожнее с копипастом: фингерпринтинг текста непечатаемыми символами - 1
Безусловно, он может здесь быть. И вы никогда не догадаетесь

Зачем?

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

ZalgoFuzzing: использование нестандартных методов размытия пейлоадов - 1

Использование нестандартных техник обфускации пейлоада (полезной нагрузки) при проведении тестирования на проникновение веб-приложений может позволить обходить фильтрацию защитных средств и способствовать реализации вектора атаки. В этой статье я расскажу про т.н. Z̴a҉̠͚l͍̠̫͕̮̟͕g͚o̯̬̣̻F̮̫̣̩͓͟ͅu̯z̡͉͍z̪͈̞̯̳̠ͅi̴̜̹̠̲͇n̰g̱͕̫̹͉͓ как метод обфускации (размытия) пейлоадов.
Читать полностью »

RegExp Unicode Property Escapes перешли на 4-ю ступень и будут включены в ES2018.

В V8 они доступны без флага начиная с v6.4, так что готовы к использованию во всех текущих каналах Google Chrome от стабильного до Canary.

В Node.js они будут доступны без флага уже в v10 (выходит в апреле). В других версиях требуется флаг --harmony_regexp_property (Node.js v6–v9) или --harmony (Node.js v8-v9). Сейчас без флага их можно испробовать или в ночных сборках, или в ветке v8-canary.

При этом нужно иметь в виду, что сборки Node.js, скомпилированные без поддержки ICU, будут лишены возможности использовать этот класс регулярных выражений (подробнее см. Internationalization Support).

Подробнее о поддержке в других движках и средах см. в известной таблице (после перехода проскрольте чуть выше).

Я не буду повторять описания этой долгожданной возможности, лишь сошлюсь на несколько статей от известных специалистов: Читать полностью »

Security Week 45: Эфир замерз в кошельках, миллион фальшивых WhatsApp, бесполезная защита интеллектуальной собственности - 1В мире фанатов технологии блокчейн все очень просто и безопасно. Еще бы, ведь блокчейн так надежен сам по себе, что для обеспечения любых финансовых операций не требует ни регулятора в лице государства, ни банков, ни других надстроек. Мы не будем спорить с тем, что технология лишена многих недостатков и уязвимостей старого мира. Но это вовсе не означает отсутствия у нее собственных слабых мест, которые раньше и вообразить-то было невозможно. В общем, такое дело: из-за уязвимости, обнаруженной в популярном Ethereum-кошельке Parity, замороженными оказались средства в криптовалюте, которые, по разным оценкам, эквивалентны 150-300 миллионам долларов США.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js