Lovable быстро собирает работающее приложение, но что увидит любой человек с открытой ссылкой, зависит от настроек доступа, а их легко пропустить. Чтобы показать проверку на деле, я собрала в Lovable приложение онлайн-записи для выездного груминга собак, опубликовала его и проверила так же, как проверяю приложения клиентов: сначала снаружи, по одной публичной ссылке, потом по всем главным шагам клиента и владельца с телефона. По одной публичной ссылке я нашла способ получить доступ к кабинету владельца и увидеть телефоны и домашние адреса всех клиентов. Такую ошибку легко допустить: при сборке я сама попросила Lovable сделать разовую кнопку «Сделать меня владельцем», а регистрация осталась открытой для всех. Ниже полный отчёт: 7 проблем, все исправлены и перепроверены на работающем приложении.
Снаружи, только по публичной ссылке. Смотрю на приложение так, как его видит любой человек без пароля: можно ли без входа увидеть данные клиентов, может ли кто угодно зарегистрироваться и получить доступ, который ему не положен, открыты ли загруженные файлы, не остались ли в коде страницы секретные ключи, которые открывают доступ к данным клиентов. Проверка только на просмотр: ничего не меняю и не копирую.
С телефона, как ваш клиент и как владелец. Прохожу главные шаги на экране телефона: запись, перенос, поздняя отмена, очередь на освободившееся время, напоминания, кабинет владельца.
В эту проверку не входит построчное чтение кода и настроек доступа к данным: это полный разбор, его образец — Walkwren.
| 1 | Любой посетитель мог стать владельцем и увидеть всех клиентов | опасно | исправлено |
| 2 | Освободившееся время предлагалось клиенту, чей визит туда не помещается, а ему сообщали «кто-то успел раньше» | теряются деньги | исправлено |
| 3 | Один человек получал несколько напоминаний «вы не закончили запись» | риск попасть в спам | исправлено |
| 4 | Главная кнопка записи срабатывала только со второго нажатия | теряются записи | исправлено |
| 5 | Ссылки в письмах и SMS не открывались | клиент не может перейти | исправлено |
| 6 | Экраны писали «отправлено», хотя сообщение ещё не ушло | подрывает доверие | исправлено |
| 7 | Ошибка при первом открытии кабинета владельца | незначительно | исправлено |
| Данные клиентов без входа, секретные ключи в коде страницы, открытые файлы | ничего не найдено | ||
Что я нашла. На открытой странице входа была ссылка «First time? Create the owner account» («Впервые? Создайте аккаунт владельца»), а в кабинете — разовая кнопка «Make me the owner» («Сделать меня владельцем»). Регистрация была открыта всем, аккаунт владельца ещё не создан, поэтому роль владельца получил бы первый, кто зарегистрируется.
Чем грозит бизнесу. Любой человек со ссылкой получает имена, телефоны и домашние адреса всех клиентов, расписание и переписку, а настоящий владелец не может войти в собственное приложение.
Что исправлено. Ссылка и кнопка убраны, регистрация выключена, а назначить владельца со страницы приложения больше нельзя.
Как перепроверено. На странице остался только вход по логину и паролю, а в настройках входа регистрация выключена.
Что я нашла. После отмены приложение предложило свободные 45 минут клиенту из очереди, хотя его собаке нужно 100 минут. Он нажал «Take it» («Беру»), запись не прошла, а на экране появилось «Уже занято, кто-то успел чуть раньше». Время никто не занимал.
Чем грозит бизнесу. Функция, которая должна заполнять пустые окна, оставляла их пустыми и говорила клиенту неправду. Каждое такое окно означает несостоявшийся визит.
Что исправлено. Предложение получают только те, чей визит помещается в окно с учётом района, дороги и конца рабочего дня. В предложении видна их услуга и её длительность, а при отказе указана настоящая причина.
Как перепроверено. Отмена → предложение клиенту, чей визит помещается → «Take it» → «It's yours!» («Время ваше»), и визит появляется в неделе владельца.
Что я нашла. Каждая начатая запись создавала новый контакт, поэтому человек, который дважды начинал запись с одного номера, получал несколько сообщений «Still want that groom?» («Ещё хотите записаться на груминг?»).
Чем грозит бизнесу. Клиентов это раздражает, а сервисы рассылки SMS и писем помечают отправителей, которые повторяются, и сообщения начинают уходить в спам.
Что исправлено. Контакты объединяются по телефону и почте. Одному человеку уходит не больше одного напоминания за 7 дней и ни одного после завершённой записи.
Как перепроверено. Два запуска рассылки подряд не отправляют ничего дважды.
Что я нашла. Первое нажатие на «Book a groom» («Записаться») только проверяло индекс, и на экране ничего не менялось. Клиент с телефона решил бы, что запись не работает.
Что исправлено и как перепроверено. Одно нажатие проверяет индекс и сразу открывает следующий шаг.
Что я нашла. Ссылки в письмах и SMS были неполными, без адреса сайта, и не открывались. А экраны писали «отправлено», хотя сообщения только стояли в очереди на отправку.
Что исправлено и как перепроверено. В сообщениях теперь полные ссылки на сайт. Вместо «отправлено» экраны пишут «обработано» и «готово к отправке» с пояснением, что настоящая отправка подключается к почтовому адресу бизнеса.
Что я нашла. При первом открытии сервер и браузер рисовали разные экраны кабинета, и в консоли браузера появлялась ошибка. Владелец её не видит, но такие ошибки могут со временем приводить к сбоям на странице.
Что исправлено и как перепроверено. Сервер и браузер теперь показывают одинаковый первый экран, при чистой загрузке ошибок нет.
Коротко для владельца: без входа данные клиентов не видны, секретных ключей в коде страницы нет, регистрация выключена, встроенная проверка безопасности Lovable не нашла проблем.
Ниже журнал проверки как есть. Запросы только на чтение, с тем же публичным ключом, который получает браузер любого посетителя. Значения не выводятся: только отвечает ли таблица и сколько строк видно.
Приложение: https://bramblewash-bookings.lovable.app
Сервер: Lovable Cloud (найден в коде страницы, 29 файлов скриптов)
Секретные ключи в коде .......... нет
Таблицы без входа ............... проверено 15 · видно 0 строк во всех 15
Регистрация ..................... выключена
Подтверждение почты ............. включено
Открытые функции ................ 5 (не вызывали — вызов может изменить данные; в базе
подтверждено, что служебные посетителю недоступны)
Проверка безопасности Lovable ... 0 проблем
Отчёт по вашему работающему приложению за один рабочий день, от $150. По каждой проблеме вы видите, что я нашла, чем это грозит бизнесу и как это исправить. Исправления вносите сами или поручаете мне отдельным этапом, после которого я проверяю приложение ещё раз. Работаю только с вашего письменного разрешения. Проверка только на просмотр: ничего не меняю и данные ваших клиентов не копирую.
Самый простой способ начать: пришлите ссылку на приложение и одну фразу о том, что в нём делают клиенты. Отвечу, на что посмотрела бы в первую очередь и сколько будет стоить проверка. Ни к чему не обязывает.
Демо-приложение: bramblewash-bookings.lovable.app, кнопка «Open Maya's dashboard (demo)» открывает кабинет владельца.
P.S. Если приложение уже принимает записи или оплату, проверьте его до того, как туда придут первые сотни клиентов: исправить доступ сейчас дешевле, чем объяснять клиентам потом.