Русский
Русский
English
Статистика
Реклама

Ошибки и грабли

Небезопасный сервис про безопасность

02.06.2021 10:16:01 | Автор: admin

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

Есть у меня и своя история провала - о сомнительных решениях, которые привели к утечке персональных данных пользователей. Сегодня эти решения вызывают недоумение, но пять лет назад нашей неискушенной команде они казались приемлемыми.

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

Продукт включал в себя приложения Android/iOS, фронт и бэк. Я писала мобилки, двое моих коллег занимались фронтом и бэком соответственно.

Сервис делался для другой страны. Для выхода в продакшен был жесткий дедлайн - пресс-конференция, на которой представители заказчика - общественные деятели этой страны - планировали представлять продукт публике.

Утро перед пресс-конференцией. Заблаговременно выпущены релизы в AppStore и Google Play, фронт и бэк задеплоены. Боевая база данных потихоньку набирает пользователей - наша команда, тестировщики, представители заказчика и случайные люди, которые сами нашли продукт, хотя реклама еще не давалась.

Всё началось с классной идеи дропнуть базу данных продакшена перед пресс-конференцией. Сначала мы хотели удалить только таблицу фейковых происшествий, но она была связана с другими сущностями, и дропнуть всё разом было проще. Да, в сервисе уже были настоящие пользователи, но не страшно - создадут новые аккаунты, не так уж их и много.

Согласовав с заказчиком маневр, мы очистили базу. Началась пресс-конференция, а вместе с ней начали появляться первые регистрации.

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

Мы переглядывались круглыми глазами и не понимали, как такое могло произойти. Опытные разработчики среди читателей уже наверняка догадываются, где мы налажали проектируя базу и API, чтобы случилось то, что случилось.

Выстрелили два фактора - целочисленный id у пользователей и вечный токен, который генерировался однозначно из этого id.

Поясню подробнее на примере.

Вася создал учетную запись. База данных присвоила Васе id под номером 1, сервер взял этот id, сгенерировал из него токен и отдал Васе. Вася сохранил токен и ходит с ним на сервер за приватными данными. Теперь мы очистили базу. Аккаунта Васи больше не существует, но токен на его устройстве всё ещё хранится. В сервисе регистрируется первый новый пользователь Аня. База теперь уже Ане выдает id под номером 1, сервер генерирует из этого id такой же токен. В результате у Васи хранится токен Ани, и Вася может делать запросы от имени ничего не подозревающей Ани.

На момент реализации проекта мы знали о том, что можно использовать uuid вместо целочисленных id, что токен должен содержать срок действия и рефреш, но посчитали эти нюансы избыточными.

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

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

Подробнее..

Разработчики любят похоливарней

28.07.2020 14:05:45 | Автор: admin
Казалось бы, программисты должны руководствоваться фактами, но вместо этого мы регулярно скатываемся в разборки. Конечно, хороший холивар на созвоне, в треде слака, публичном чате или комментариях к статье бывает полезен если остается конструктивным. Но в ряде случаев разговор начинает вестись по тем же паттернам, что у каких-нибудь антипрививочников или политиков: тут опустил часть фактов, там чуть нарушил цепочку мыслей но чувствуешь себя логичным, как волк в анекдоте про зайца и спички

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


Хочу поделиться наблюдениями в этот четверг вместе с Григорием Петровым, Антоном Назаровым и подкастом Цинковый прод. Подключайтесь похоливарить пообщаться.

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

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


Если что, запись выступления доступна здесь.

Пример когнитивного искажения случился у меня на глазах. В докладе фигурировал разработчик Вася альтер-эго менее опытного меня 8-10 летней давности. Собственно, на его граблях я старался показать, как не надо переходить на работу вне офиса. Утрированное поведение Васи склеились с логотипом компании, в которой я сейчас работаю, и мои давние ошибки стали ассоциироваться у части слушателей с привычками 160+ разработчиков в ней. При том, что все эти ребята уже давно на удаленке и свои грабли прошли про это даже был дисклеймер. Но наша память избирательна

Вот как-то также мы решаем, например, что Kubernetes есть у А, о нем пишут в Б, он у большинства компаний, нам с ним будет круто (пример условный, давайте не будем начинать холивар вокруг него) ищем подтверждение своих ощущений, игнорируем обратное. В итоге собираем побольше пунктов за, чтобы решение выглядело весомым и в лучшем случае рождаем доклад о героическом преодолении граблей, а в худшем случается как-то так:

Из-за бага в Google WebView крашилось приложение у сотни тысяч пользователей. Мы решили перейти на движок от Mozilla. Переписывали приложение 2 месяца. Выкатили без WebView. Пользователи стали жаловаться еще больше: в новом движке медленно отрисовывалась сложная 2d-графика. Мы видели, что fps проседает, но не обращали внимания, тк фиксили другое. А гугл тем временем поправил баг. И мы решили откатить все, что делала команда эти месяцы.

История рассказана на условиях анонимности

Такие истории собирает Антон M0rtyMerr Назаров: этой весной он делал отличный доклад о том, почему рациональное не всегда щелкает у нас в голове при выборе проектов и решений в них. А после выступления опросил слушателей на условиях анонимности.

Если отбросить детали, структура многих рассказов о неудачных решениях выглядит так:

  • очень хотели/верили в какую-то технологию или подход, взялись попробовать и не доделали или не учли что-то, что лежало на поверхности,
  • слишком хорошо думали о себе, проекте, сроках, будущем и всем этом вместе а на поверку оказалось, что...,
  • теперь мы приобрели вот такой вот опыт и готовы до посинения отстаивать это знание читай, холиварить.

Эти паттерны следствие когнитивных искажений в планировании и принятии решений, про которые так здорово рассказывает Григорий eyeofhell Петров. Пришла идея собраться и обсудить такой вот личный опыт через призму научно-популярного подхода. А если три человека в 2020-м хотят поговорить, они пишут подкаст ;) Тут и пригодилось знакомство с ребятами из подкаста, где регулярно поднимают холиварные темы.

В общем, в четверг поговорим про когнитивные искажения и их проявления в ИТ на реальных примерах:


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

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

p.s. Если получится прям хорошо, конечно же, опубликуем расшифровку избранных моментов и дополнительные ссылки по теме.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru