Переход с Splync v1.0 на Splync v1.1
Когда вы регистрируетесь в Splync, вас просят ввести адрес электронной почты и пароль. Как я уже упоминал в предыдущих статьях, Splync v1.0 уже имел базовые меры безопасности. Ваши данные передавались по защищенному каналу HTTPS. Наш сервер был защищен с помощью SSH, так что доступ к нему имел только разработчик. Ваш пароль никогда не хранился в открытом виде, а был зашифрован в базе данных, чтобы его никто не мог расшифровать. Однако в v1.0 не было подтверждения по электронной почте при создании аккаунта. Splync как MVP (Минимально жизнеспособный продукт) был выпущен без этой функции, так как приложение было еще на стадии, когда только мои друзья знали о его существовании. В v1.0 приложение просто проверяло, есть ли в введенном email символ "@" между буквами и уникален ли он среди существующих аккаунтов.
Что если нет подтверждения по электронной почте
Если приложение позволяет пользователям создавать аккаунты без подтверждения их личности, легко представить, как кто-то может использовать чужой адрес электронной почты для создания своего аккаунта. Именно так и могло произойти. Хотя это не значит, что ваши данные будут утекать, вы не сможете зарегистрироваться с собственным адресом, если он уже был использован. Кроме того, кто-то может создать аккаунт, используя полностью вымышленный адрес. Это может показаться не таким уж серьезным сначала, но станет катастрофой, когда разработчик попытается выставить счет или связаться с этим пользователем позже. Я даже не узнаю, кто это на самом деле! Поэтому следующий шаг для Splync — подтверждение по электронной почте.
Как работает подтверждение по электронной почте
В Splync v1.1 при регистрации нового пользователя приложение автоматически отправляет письмо на указанный адрес. В этом письме содержится уникальная, автоматически сгенерированная ссылка для подтверждения. Кликнув по ней, пользователь подтверждает, что действительно имеет доступ к этому почтовому ящику. После подтверждения сервер активирует аккаунт пользователя и сохраняет его в базе данных как действительный и аутентифицированный. Звучит знакомо, не так ли? Этот процесс гарантирует, что каждый аккаунт в Splync принадлежит реальному, доступному человеку — небольшой, но важный шаг к созданию сообщества, которому можно доверять. Давайте подробнее рассмотрим, как это реализовано с технической стороны.
Техническая реализация подтверждения по электронной почте
Бэкенд Splync работает на Python/FastAPI, а мобильное приложение построено на SwiftUI. Приложение отвечает только за пользовательский интерфейс, в то время как логика подтверждения и чувствительные данные надежно хранятся на сервере. В v1.1 мы добавили стандартный шаг подтверждения по электронной почте между «неподтвержденным пользователем» и «подтвержденным пользователем». Когда новый пользователь регистрируется, приложение отправляет введенные данные на сервер. Сервер использует базу данных MariaDB. Он сохраняет пользователя как неподтвержденного в базе данных. Пароль шифруется и сохраняется, но аккаунт еще не активен. В этот момент сервер также генерирует уникальный токен подтверждения с временем истечения. Затем, используя сервер SMTP (Simple Mail Transfer Protocol), сервер отправляет письмо с подтверждением, содержащим безопасную одноразовую ссылку. Когда пользователь открывает ссылку, сервер проверяет, действителен ли токен и не истек ли его срок действия. После подтверждения аккаунт становится активным, и пользователь может входить в приложение как обычно. Это обеспечивает легкий и безопасный процесс аутентификации.
Python, FastAPI, SwiftUI, SMTP, MariaDB
Если это кажется секретным кодом, не переживайте — это просто инструменты, которые заставляют систему работать вместе. Представьте процесс регистрации в Splync как центр поддержки клиентов, подтверждающий личность. "Как вас зовут и ваш адрес электронной почты?" спрашивает SwiftUI, дружелюбный оператор на стойке регистрации. Вы сообщаете ей свои данные, и она говорит: "Не могли бы вы подождать минутку?" Она сразу же передает их FastAPI, внутренней телефонной системе офиса. FastAPI соединяет ее с Python, специалистом бэк-офиса, ответственным за проверку. Python проверяет с MariaDB, базой данных клиентов, чтобы безопасно записать вашу информацию — отмечая ваш статус как "неподтвержденный". Затем Python просит SMTP, внешнего мессенджера, отправить вам письмо с подтверждением с безопасной ссылкой. Когда вы нажимаете на ссылку, Python проверяет, что она действительна, и обновляет вашу запись в MariaDB как "подтвержденную". Наконец, FastAPI сообщает оператору, что ваша личность подтверждена, и ваш аккаунт теперь активен. Вместе эти части делают процесс подтверждения Splync как человечным, так и безопасным.
Следующий шаг в безопасности Splync
Подтверждение по электронной почте может показаться незначительной функцией, но оно меняет все в вопросах доверия. Это момент, когда Splync переходит от личного проекта среди друзей к общественному приложению, доступному для всех. Отправка ссылки для подтверждения через SMTP даже ощущается как первое рукопожатие Splync с новым пользователем. За кулисами эта функция закладывает основу для будущих улучшений — восстановления пароля, многофакторной аутентификации и восстановления аккаунта. Каждый уровень безопасности строится на предыдущем. С подтверждением по электронной почте Splync v1.1 делает значительный шаг вперед — делая управление общими расходами не только удобным, но и действительно надежным.