Pull to refresh
161
0
Джехи @jehy

Web developer

Send message

История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

Reading time7 min
Views16K
Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

Дальше я расскажу, каким именно образом он попал в недобросовестные руки и был злонамеренно использован — но для этого придётся немного погрузиться в его историю и обстановку разработки. Сразу предупрежу, что эта история абсолютно реальная.

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments35

Безопасность сторонних зависимостей — проверяем при помощи snyk

Reading time4 min
Views14K
Недавно была прекрасная публикация “Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов”, на которую я переводил ответ. Автор недавно опубликовал вторую часть, но, подозреваю, что перевода не будет — там предлагается решать проблему прекрасными способами вроде перевода важных элементов ввода «в отдельный iframe» или «на особые страницы без стороннего javascript». На этом месте те, кто повёлся на первую статью, должны бы усомниться в адекватности автора — и низкий (относительно предыдущей) рейтинг новой статьи это показывает.

UPD: перевели таки.

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

image
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments6

Я ненавидел Javascript. А теперь он мне нравится

Reading time4 min
Views26K
Моя карьера началась с написания программ для мобильных устройств. Я изучал C и Objective-C, чтобы работать с устройствами на iOS. У меня был чёткий контроль над программным обеспечением, я учился тому, как правильно работать с памятью, и проводил долгие часы за отладкой багов, которые возникали из-за моей небрежности (это было ещё до ARC). Я развивался с уклоном в сторону iOS, а так же так же начал изучать Java (и совсем недавно приступил к Kotlin) для перехода на Android.
Читать дальше →
Total votes 45: ↑31 and ↓14+17
Comments28

Рассказ о том, как я майню эфир через meltdown на ваших телефонах при помощи npm

Reading time4 min
Views46K

Предисловие от переводчика


Пока вы не добрались до содержимого статьи, советую отложить её, отвести взгляд от монитора, и подумать на тему того, как же это происходит. Как всегда, всё гениальное просто. Ответ на поверхности. Подумали? Тогда читайте дальше.
Читать дальше →
Total votes 76: ↑54 and ↓22+32
Comments120

Антипаттерны для поиска соискателей

Reading time8 min
Views39K

Привет, Хабр. В качестве тимлида я стою одновременно по обе стороны поиска соискателей — последние пять лет я активно участвую в собеседованиях своих разработчиков, а так же прохожу собеседования. Мне не стыдно писать, что я хожу по собеседованиям — это помогает понять, что сейчас востребовано на рынке, и где у тебя есть пробелы, которые хорошо было бы восполнить. Да и вообще любой специалист должен стремиться к росту, а не стагнации.


И за это время у меня накопилось огромное количество смешных и грустных историй взаимодействия с рекрутерами с обеих сторон, которые я решил систематизировать в общий сборник антипаттернов. Поехали!

Читать дальше →
Total votes 83: ↑74 and ↓9+65
Comments485

Система для работы с чарниками для ролевых игр

Reading time4 min
Views13K
Сегодня пятница, так что самое время предаться нашим весёлым странным страстям. Надеюсь, что здесь найдётся аудитория, которая при словосочетании “ролевые игры” представляет себе нечто отличное от девки с плёткой в латексе… Если вы именно о ней и подумали, то дальше читать вам, скорее всего, будет неинтересно.

На самом деле речь идёт про это.

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments13

Автоматизированное тестирование ботов для Telegram

Reading time5 min
Views23K
Кажется, что время — это река, которую внезапно переклинило, и она решила течь по кругу. Именно такое впечатление складывается на первый взгляд, когда видишь, что вновь стали популярны боты в мессенджерах. Но это впечатление обманчиво. Изменилось очень многое — мощности, которые стоят за ботами, возможность обработки ими мультимедиа информации, наличие информации о пользователях, круг охвата… В общем, это явно не ностальгический тренд, а реально полезная технология, которая будет развиваться и дальше.

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

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

Конечно, можно зарегистрировать дополнительного бота для тестирования, но это вариант кривой и некрасивый. Обращение ко внешнему апи во время тестов, заглушка, которая не даст общаться с ботом кому попало, ограничение на скорость отправки сообщений раз в секунду… Если слать сообщение раз в секунду, то граф из каких-то 60 вершин будет тестироваться уже больше минуты! И я уже не говорю о том, что у нас нет никакой возможности смоделировать возросшую нагрузку на бота, при которой он упрётся в ограничение в 30 сообщений в секунду… В общем, я понял, что опять придётся делать что-то своё.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments3

Сложно о простом: ESLint в команде

Reading time6 min
Views130K
Маленькое введение. Скорее всего этот пост будет интересен только тем, кто знает, что такое ESLint, но всё же сделаю небольшую вводную — а то сам сильно расстраиваюсь, когда открываю публикацию, и она начинается словами “уже 10 лет мы используем ххх, о котором вы конечно же знаете, а написать мы решили про xxx.yyy, что никто никогда не делал, но наверняка это очень круто”.

Итак, ESLint это крутой инструмент, который позволяет проводить анализ качества вашего кода, написанного на любом выбранном стандарте JavaScript. Он приводит код к более-менее единому стилю, помогает избежать глупых ошибок, умеет автоматически исправлять многие из найденных проблем и отлично интегрируется со многими инструментами разработки (привет, Jetbrains, мы любим вас!). Кстати, он, как и другие линтеры, не обязывает вас к одному какому-то конкретному стилю. Наоборот — вы можете выбрать что-то из лучших практик и доработать по своему усмотрению!

Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments29

Безоблачное мобильное приложение — жизнь без Google Play

Reading time6 min
Views18K
Чуть раньше мы с вами думали про то, какие есть альтернативы Google Play, и как можно обходить разные способы блокировки на мобильных приложениях при помощи Google Compression Proxy и тора. Сегодня хочется поговорить о том, можно ли запустить и поддерживать полноценное мобильное приложение на Android без помощи какой либо обязательной внешней инфраструктуры. Рассказывать буду на примере всё того же приложения для просмотра рутрекера. Оно ничем особо не примечательно, но очень наглядно.


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments45

Экзамен для будущих «русских хакеров» в Московском Политехе

Reading time8 min
Views32K
И снова здравствуйте. Обычно я пишу статьи в качестве разработчика, но сегодня хочется поделиться опытом проведения экзамена по информационной безопасности в Московском Политехе. По-моему получилось довольно интересно. Задание даже может быть полезным начинающим тестировщикам и пентестерам. Но вначале я немного расскажу про то, как проходили занятия в течении семестра — чтобы было понятно, как мы дошли до жизни такой.


Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments35

Покемоны замерзли. Как реальная реальность влияет на дополненную и на мобильные приложения в целом

Reading time4 min
Views12K
Основной хайп по покемонам уже прошёл, однако они являются отличным примером, на котором можно показывать и обсуждать всякие интересные вещи — например, вопросы безопасности мобильных приложений. Или принципы того, как можно оседлать волну хайпа и раскрутить свой бренд (очень крутой доклад был у Вячеслава Грабчака на эту тему). А сегодня мы поговорим про то, как реальная реальность (простите за нарочитый каламбур) влияет на дополненную. И что вы можете с этим сделать.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments39

Как на самом деле пишут софт в 2016 году

Reading time3 min
Views32K
Многие годы софтварные компании скрывали от нас это. Читайте скорее, пока не удалили, и распространяйте как можно шире.

Вы до сих пор думаете, что огромные корпорации обладают большим штатом разработчиков, которые пишут им программный код руками? Наивно. На дворе 2016 год, и правила полностью изменились. Сейчас легко доступны чудовищные вычислительные мощности, о которых 10 лет назад нельзя было и заикнуться. Ваш телефон мощнее, чем вычислительные модули, которые ставили на космические корабли. А человеческое время стоит страшно дорого — в особенности время квалифицированных программистов, которыми, словно пчёлами, якобы набиты офисы технологических гигантов.
Читать дальше →
Total votes 51: ↑34 and ↓17+17
Comments59

Лёгкая интеграция tor в android приложение на примере клиента для рутрекера

Reading time7 min
Views19K
Мне давно было интересно, можно ли легко добавить проксирование через тор в Android приложение. Вроде бы довольно очевидная задача, плюс тор браузеры уже под эту платформу давно есть… Но есть много задач, которые сложнее, чем кажутся. Для нетерпеливых сразу скажу — да, можно, и получается довольно легко, быстро и классно. В особенности если не копать с нуля, а воспользоваться моими наработками.

Для примера я буду использовать приложение для работы с рутрекером — никто не любит код, который работает со сферический конём в вакууме. Раньше это приложение обходило блокировку при помощи Google Compression Proxy — но увы — то ли рутрекер, то ли гугл выпилил возможность авторизации с этой проксёй. Сразу скажу, что, конечно, есть всякие впны и прочее, что вы используете для лёгкого обхода блокировки и просмотра сериальчиков. Но речь здесь идёт не про это. Как вы понимаете, тор можно использовать в мобильном приложении для огромного количества вещей — например, для доступа к веб сайтам в .onion или для реализации особо безопасного мессенджера.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments13

О чём молчит Google и почему вам стоит использовать Apache HttpComponents в Android

Reading time7 min
Views24K
Эту статью нужно было публиковать гораздо раньше (почти на шесть лет), сэкономив тем самым Android разработчикам огромное количество месяцев бессмысленной разработки — но увы, не всегда есть на это время.

Введение


Если вы разрабатываете под Android, то наверняка сталкивались с тем, что открываете вы своё приложение, которое отлично работало несколько лет, и тут внезапно оказывается, что Apache httpComponents стали deprecated, и их не рекомендуется использовать. Сначала давайте разберём, что же произошло, а потом сделаем выводы, что делать.
Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments40

Хроника взлома Pokemon Go

Reading time12 min
Views35K

Введение от переводчика


Перевёл эту историю, так как её посчитали интересной в моей предыдущей статье по поводу взаимоотношений Niantic и разработчиков всякого дополнительного софта.
Эта милая история не претендует на самый великий и профессиональный взлом всех времён и народов, но позволяет окунуться в уютную атмосферу open source сообщества, занятого общим делом. Возможно, кто-то вспомнит свои прошлые дни…
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments36

Будущее безопасности мобильных приложений, или чему нас могут научить покемоны

Reading time5 min
Views35K
С момента появления Pokemon Go, я с большим любопытством отслеживаю всё, касающееся этой игрушки. Как ни странно, она даёт безумное количество интересной информации — в первую очередь относительно разработки мобильных приложений. Казалось бы, занимаетесь вы разработкой банковских приложений — в чём тут может быть связь? А нет, вам тоже найдётся, чему научиться у покемонов.
Читать дальше →
Total votes 55: ↑52 and ↓3+49
Comments58

Чего ждёт Yandex? Или статус Yandex.Store

Reading time5 min
Views26K
Наверное, многие недоуменно наморщили лбы — что это такое, «Yandex.Store»? И недаром. Вокруг этого сервиса было огромное количество шумихи, а потом всё внезапно прекратилось и затихло. Почему? Попробуем разобраться.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments48

Хабростатистика, часть 2 — опровержение с графиками

Reading time2 min
Views5.3K
Вчера я публиковал статью на тему того, когда лучше публиковаться на хабре. С тех пор мой паук собрал статистику за весь 2015 год, и картинка немного изменилась. Так же я построил несколько графиков, и в целом картина прояснилась. Осторожно, трафик!
Читать дальше →
Total votes 17: ↑12 and ↓5+7
Comments5

ХаброСтатистика — в какое время лучше публиковать статью на хабре?

Reading time5 min
Views12K
Астрологи объявили месяц статистики, и пожалуй я присоединюсь на сегодня к авторам статистических статей.

Наверняка вы задумывались — когда лучше публиковать статью? В выходные, чтобы её внимательно читали? В пятницу, чтобы у всех было хорошее настроение? В понедельник, когда после выходных все выползают читать хабр? А может быть, лучше выбрать время обеденного перерыва? Сразу оговорюсь, что данный вопрос имеет значение не только для хабра — примерно то же самое можно сказать про почти любые публикации, если нету какой-то совсем суровой конкретики. У меня есть своя гипотеза, о ней я расскажу в конце статьи.
Читать дальше →
Total votes 63: ↑47 and ↓16+31
Comments14

Есть ли жизнь без Google Play? Альтернативы и обновление приложений

Reading time7 min
Views105K

На днях я сделал приложение для обхода блокировки rutracker, однако уже дважды получил от Google отбой по разным надуманным причинам. Это очень огорчило, и возник вопрос — что делать? Поиск по хабру показал, что такие проблемы возникли очень у многих (пруфы: один, два, три, четыре… Тысячи их).
А помимо бана есть ещё много причин, по которым ваше приложение может оказаться «за бортом» Google Play — например, если оно предназначено для использования только в компании, для друзей или для другого круга лиц. Так же возможно, что ваше приложение по определению не может быть выложено на Google Play — например, если оно является само по себе установщиком приложений.

Готовой статьи на эту тему я не нашёл, так что решил, что верным решением будет разобраться и написать свою. Итак, принципиальных варианта есть всего два.
Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments36

Information

Rating
4,339-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity