Заключительная рецензия в рамках конкурса «Продолжи мысль» от @systems_education. Очень жизненный пост о миграции номера телефона (НТ) и его последствиях от Юрия Насу.
🍕 Long story short: НТ сменился, а это — первичный ключ (PK) во многих сервисах. Куда-то надо явиться срочно пешком, куда-то позвонить, кто-то сообразит в онлайн-обработку этого кейса, а про какие-то сервисы так и забудешь вообще. Я так долго получал чужие смс-ки, включая коды для банковских операций и историю покупок, так что кейс и частый, и опасный.
🍕 Вот и автор наткнулся на пиццерию, которая совсем никак не умеет менять номер, даже при личном обращении. Послали заводить новый аккаунт. Для всех, кто сейчас ищет работу и заводит пачку новых учёток на работном сервисе, такой сценарий не баг, а фича. Но в большинстве мест мы не пытаемся уйти от идентификации, а наоборот — желаем держать консистентную историю учётной записи.
В аккаунте был указан мой Email и моя дата рождения, и я сразу задумался: «Вот оператор связи возьмет и отдаст мой старый номер другому человеку, а он тоже окажется любителем пиццы!» И этот человек залогинится и получит доступ к моим персональным данным, к адресам, на которые я делал заказы.
🍕 А теперь представьте, что ещё могло бы быть привязано к аккаунту — банковские карты, которые иногда работают без подтверждения по смс. Меня поразило здесь, что ведь был второй PK — почта, и она могла бы выручить, но нет, аналитики такого сценария не заложили.
Я 2 года проектировал систему идентификации клиентов для кредитного брокера, работал с API Госуслуг, СМЭВом. Мы тоже решили использовать номер телефона как идентификатор клиента. «Почему не СНИЛС?» — спрашивал я. «Его никто не помнит и это будет резать конверсию», — отвечали мне.
🧀 Чувствуете, чем пахнет? Это не дыры в 4 сырах, это дыры в процессах. Никогда, особенно на уровне БД, не закладывайте естественных ключей в качестве идентификаторов. Храните их, ищите по ним, индексируйте, но только не подменяйте user_id или car_id паспортом или серийником. Ну сделайте синтетический uuid, вам жалко что ли?
🧀 Не хотите резать конверсию, чтобы не лишиться премии, а после нас хоть потоп? Предусмотрите любую другую возможность миграции:
• В ручном режиме внутри приложения или по звонку в поддержку при наличии доступа к прежней учётке
• Через отделение для идентификации по документам
• Через KYC верификацию по лицу и документам
• Через привязку аккаунта к внешней системе (даже логин через условный google-account)
• Через дистанционный видеозвонок с поддержкой (делал так с банками, полёт отличный. Смена утерянного НТ прошла за 5 минут)
🪤 Пост поднял очень важную тему на простом примере — помните о том парне без пиццы
#продолжи_мысль_SE | Analyst Boost
