Додокод или как путаются в рабочей системе понятия «кодовое слово» и «цифровой код подтверждения» по смс



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

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

    Все началась год назад (декабрь 2017) в г. Великий Новгород.

    Диалог на кассе (кассир и покупатель в лице меня, плюс потом директор филиала):
    — Добрый день, скажите, пожалуйста, Ваш номер телефона.

    — Добрый, ХХХ-ХХХ-ХХ-ХХ.

    — Денис, Вы хотите что-нибудь еще добавить к заказу?

    — Нет, спасибо, можно списать бонусы за заказ?

    — Да, конечно, скажите свое кодовое слово в личном кабинете?

    — Вы знаете, я хотел его там создать это кодовое слово, но у меня не получалось.

    — Сейчас позову нашего директора, она Вам поможет (т.е. поможет создать кодовое слово на сайте для клиента!).

    — Добрый день. Чем могу Вам помочь?

    — Как мне можно создать кодовое слово на Вашем сайте в личном кабинете?

    — А! Вы, наверное, пытались это сделать в новой версии сайта, а Вам нужно зайти в старую версию по вот такому адресу.

    — Да, сейчас зайду (захожу на старую версию сайта, регистрируюсь и создаю кодовое слово по правилам – только русские буквы и одно слово — «додосл»), спасибо!
    Позже в компании старую версию сайта убрали из доступа, оставив только новую, где мое кодовое слово так и осталось.

    Вход в личный кабинет через код подтверждения по номеру телефона:







    Личный кабинет:



    Описание строки «кодовое слово»:





    Что можно написать в строке «кодовое слово» (только русские буквы):





    Смотрим код страницы по элементам:







    В самом конце «view-source:https://dodopizza.ru/ekaterinburg/profile» видим

    console.log
    ('Привет! Мы ищем увлечённых мотивированных разработчиков и поэтому приглашаем тебя к себе.\n\nСайт — это лишь вершина информационной системы, которую мы создаём для достижения своей цели. Наша цель — построения самой эффективной сети быстрого питания на планете.\n\nСегодня у нас более 390 пиццерий в 11 странах, и мы обрабатываем 1600 запросов в секунду. Через 2 года у нас будет 800 пиццерий и 3К запросов в секунду. Чтобы успевать за темпами роста бизнеса, мы совершенствуем стек технологий: заменяем ASP.NET 5 \u002B jQuery на ASP.NET Core \u002B React, переходим от монолитной архитектуры к сервисной, автоматизируем деплой и регрессионное тестирование. Хостим всё в Azure.\n\nМы предлагаем белую зарплату, опционы и возможность принять участие в построении международного бизнеса. За последние четыре года по собственной инициативе от нас уволилось три разработчика. Чтобы понять, подходим ли мы друг другу, просто приходи в гости — посмотришь офис, окунёшься в атмосферу. Пиши на cto@dodopizza.com или www.facebook.com/alexander.andronov.5\n\nПодробнее тут: dodois.com');

    Вот к этим товарищам «Додо Пицца IT» и будут вопросы, которые возникли ниже!



    Наше время (январь 2019), г. Екатеринбург, после катания с ребенком на снежных горках зашли в ближайшую пиццерию.
    — Добрый день, скажите, пожалуйста, Ваш номер телефона.

    — Добрый, ХХХ-ХХХ-ХХ-ХХ.

    — Денис, Вы хотите что-нибудь еще добавить к заказу?

    — Нет, спасибо, можно списать бонусы за заказ?

    — Да, сейчас Вам придет код на номер телефона и вы мне его скажите (нажимает в интерфейсе кассы «отправить запрос по смс»).

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

    — Давайте. …. Ой, оно не правильное! Повторите еще. … Все равно пишет, что не правильное слово (пыталась два раза вбить мое кодовое слово «додосл» в интерфейсе кассы).

    — Странно, ну ладно, давайте без бонусов.


    Придя домой, в телефоне было вот такое смс с кодом из четырех цифр.



    Зайдя в личный кабинет, теперь вместо «кодового слова» у меня «код из смс» в строке «кодовое слово»:







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

    Как так? А где же «слово» из русских букв?



    Два варианта получается – разработчики изменили и добавили новые модули подтверждения статуса клиента по смс и не привели их в порядок для корректной работы со старыми модулями (строка «кодовое слово») или оператор-кассир на месте не получил всех инструкций, как работать с кассовой программой и кодовым словом.

    Про кассира – специально проверил ситуацию в другой пиццерии, все тоже самое по алгоритму действий. Если не сказать, что есть обычное кодовое слово, а не цифры из смс, то все работает как бы нормально.

    Но по факту кассир-оператор сразу отправляет запрос на подтверждение статуса клиента по смс. И зачем тогда вообще строка «кодовое слово» в личном кабинете? Вероятно, новый способ подтверждения статуса пользователя по смс должен быть основным, но вот еще старый способ с обычным введенным ранее пользователем «кодовым словом» забыли убрать или оставили как есть, а в него выводить удобно зато код из смс.

    А все дело в микросервисах и клиентском приложении, которое более просто в обращении и использует для идентификации пользователя коды из смс.

    Архитектура информационной системы «Dodo IS» вот такая:


    Получается, что в блоке «Клиенты» и блоке «Управлении сетью» в модуле коммуникаций и клиентском сайте теперь есть некорректные отработки введенных данных (причем эта ситуация произошла не очень давно, как понимаю, ведь еще в прошлом году осенью мое кодовое слово нормально работало без кодов по смс). Таким образом, происходит автоматическая замена «кодового слова» в личном кабинете пользователя на четыре цифры из смс-кода по номеру телефона пользователя для удобства далее работы с этим словом, например, уже в клиентском приложении.

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

    После общения с тех. поддержкой компании был получен ответ:
    Благодарю вас за ценную обратную связь. Прошу прощения за столь долгий ответ.
    К обсуждению была подключена группа аналитиков и техническая поддержка. Действительно, два модуля идентификации перебивают друг друга. Пришли к решению, что в ближайшем будущем придем к «додокодам» во всех источниках.
    По факту, ошибка в реализации функционала есть, но она не критична и 99,9% пользователей ее и не заметят, так как всегда носят с собой телефон и могут сказать четыре цифры из смс кода, вместо сложного кодового слова только на русском языке в личном кабинете.

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

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

      0
      на bugbounty такое не тянет? Компания вроде не маленькая)
        +2
        Так это-ж не уязвимость.
          0
          да, ошибся. Спасиб.
        +2

        Додо, видно, зашивается немного. В конце декабря тоже напоролся на некоторый косяк в форме оформления заказа (пришлось проявлять явно излишние для такого дела ловкость и смекалку, чтобы оформить заказ), а в прошлый четверг таки написал им на почту и по адресу из консоли, и лично одному человеку (недавно имел общение, остался контакт) — и… тишина)) Хотя из-за косяка в форме, я уверен, они теряют часть клиентов, которые просто не могут оформить заказ.

          +1

          Александр, привет. Вы про косяк с формой в хроме? Я прошу прощения что сразу не ответил. Косяк действительно есть и это дичь, фикс уже в бэклоге у одной из команд и выйдет в ближайшие пару тройку дней

            +1
            Привет! Да про него. Уже прочитал ответ в почте. Спасибо за обратную связь!
          –2
          Хуже идеи назвать сеть пиццерий вымершей птицей только идея назвать так аптеку (реально существует в Киеве, расшифровывается как «добрый доктор»:)). Видел еще когда-то пиццерию Lazaret — но это хоть оптимистичнее:).
            +4
            Почему можно назвать пиццерию названием существующего сейчас животного, но нельзя названием вымершего? Да хоть пусть ТирексПиццей называют. Додо хотя бы симпатичные)
            0
            Команды разработки делятся на тех, кто не использует автоматическое тестирование и тех кто теперь использует.
              +1

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

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

              Самое читаемое