Аптечка вайб-кода

Нет авторизации: любой видит чужие данные

Чужие данные видны, когда приложение проверяет права только во фронтенде: прячет кнопки, но сервер или база отдают любую запись по её номеру. Проверка «этот пользователь может видеть эту запись» должна выполняться на сервере или в правилах базы при каждом запросе, а идентификатор пользователя брать из сессии, а не из запроса.

Цена: от 110 000 ₸Срок: диагностика за 1 день, исправление от 1 дня
Спросить в WhatsApp
NUMETEKAIVA GROUPSAFIAHECTONEWTONEAsar SuJAILYSalt DasturMatras FactoryEcolosKvadrumNUMETEKAIVA GROUPSAFIAHECTONEWTONEAsar SuJAILYSalt DasturMatras FactoryEcolosKvadrum

Первая помощь и как чиним

  1. 1
    Проверить вручную

    Заходим вторым пользователем и пробуем открыть чужие записи по адресу и через API.

  2. 2
    Составить карту доступа

    Кто и что может видеть и менять: гость, клиент, менеджер, админ.

  3. 3
    Закрыть на сервере

    Проверка владельца в каждом эндпоинте, пользователь берётся из сессии или токена.

  4. 4
    Закрыть в базе

    RLS в Supabase или правила Firebase как второй рубеж защиты.

  5. 5
    Закрепить тестами

    Автотесты, которые проверяют, что чужой пользователь получает отказ.

Честно

Чинить самому или отдать в «аптечку»

СамостоятельноС Emaya
ДиагностикаСпрашиваете ИИ — он чинит одно и ломает другоеНаходим корень проблемы за 1 день
БезопасностьНе знаете, утекли ли ключи и данныеАудит, ротация ключей, закрытые доступы
ДеплойЛокально работает, на хостинге — белый экранСервер, домен, HTTPS, мониторинг
КодНикто, кроме ИИ, не понимает, как это устроеноПорядок в коде и документация
БудущееКаждая новая функция — лотереяПроект можно спокойно развивать
ВремяНочи в консолиВы занимаетесь бизнесом, мы — кодом
Где спотыкаются чаще всего

Мы уже наступили на эти грабли — вам не придётся

⚠ Утечка ключей в git⚠ RLS в Supabase⚠ Белый экран после сборки⚠ Зависимости и версии⚠ Нет логов и мониторинга⚠ Хаос в структуре кода

Аптечка: что с проектом?

3 вопроса — и мы скажем, сколько стоит починка. Чек-лист безопасности проекта в подарок.

Как работаем
01Разбор

Интервью с собственником и РОПом, аудит текущей CRM и источников заявок.

1–3 дня
02Карта процессов

Воронки, роли, точки контроля. Согласуем до того, как что-то настраивать.

3–5 дней
03Сборка

Настраиваем Битрикс24 и дописываем недостающие инструменты. Демо каждую неделю.

1–4 недели
04Запуск и рост

Обучение, база знаний, поддержка. Дорабатываем, пока цифры не поедут вверх.

дальше — с вами
Подробнееразвёрнутое описание, этапы и нюансы

Самая неприятная находка в вайб-код проекте — это не баг, а дыра: пользователь меняет в адресе /orders/1052 на /orders/1051 и видит чужой заказ, телефон и адрес. Такую уязвимость называют IDOR, и она входит в число самых распространённых в веб-приложениях. ИИ делает её особенно часто, потому что проверку прав нужно продумать, а не просто написать.

Почему так происходит

  • Защита только во фронтенде. Кнопка «Админка» скрыта для обычных пользователей, но адрес /api/admin/users отвечает всем.
  • Доверие к данным из запроса. Сервер берёт userId из тела запроса или параметра, а не из сессии. Подставить чужой номер может любой.
  • Нет фильтра по владельцу. Запрос select * from orders where id = $1 без условия на владельца.
  • Открытые правила базы. Firebase в тестовом режиме разрешает читать и писать всем до указанной даты. Supabase с выключенным RLS открывает таблицу любому, у кого есть публичный ключ — а он в коде вашего сайта.
  • Секретный ключ во фронтенде. Ключ, обходящий все правила, оказался в браузере.

Что проверить самому

  1. Создайте два тестовых аккаунта. Под первым откройте свой заказ или профиль, скопируйте адрес, затем войдите вторым и откройте этот адрес.
  2. В DevTools → Network посмотрите API-запросы. Попробуйте повторить запрос с другим номером записи.
  3. Попробуйте открыть админские адреса, не входя в систему.
  4. В Firebase откройте Rules. Опасный признак:
allow read, write: if true;

или условие только по дате request.time < timestamp.date(...).

  1. В Supabase проверьте, что RLS включён на всех таблицах с данными пользователей.
  2. Поищите в коде сервера места, где пользователь берётся из req.body или req.query.

Если хотя бы одна проверка «пробила» — не откладывайте, а заодно проверьте, нет ли секретных ключей в коде страницы.

Когда звать разработчика. Если дыра найдена, первое — временно закрыть доступ: отключить эндпоинт, включить RLS или поставить строгие правила Firebase, даже если часть функций перестанет работать. Дальше нужен разработчик, который проверит все точки доступа, а не только найденную: такие ошибки обычно системные, и одна найденная означает, что тот же подход повторён в других местах проекта.

Как чиним мы

Проводим аудит всех точек доступа к данным: эндпоинты, прямые запросы к базе из фронтенда, правила Firebase или RLS в Supabase. Составляем матрицу ролей и прав, вводим проверку владельца в каждом запросе, переносим определение пользователя в сессию или проверенный токен, закрываем админские маршруты. Добавляем автотесты «чужой пользователь получает 403». По логам помогаем оценить, были ли обращения к чужим записям. Подробнее — на странице «Аптечка вайб-кода».

Сколько стоит

Диагностика — 50 000 ₸, аудит безопасности и исправление доступа — 60 000 ₸, итого от 110 000 ₸ для небольшого проекта. Для кабинетов с ролями и большим количеством таблиц действует коэффициент размера. Рассчитайте в калькуляторе.

Частые вопросы

У меня есть вход по паролю. Разве это не авторизация?

Вход — это аутентификация: система знает, кто вы. Авторизация — проверка, что вам можно видеть конкретную запись. ИИ часто делает первое и забывает второе.

Если номера заказов случайные, этого достаточно?

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

Нужно ли сообщать клиентам, если данные уже могли утечь?

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

Сделаем так же у вас

Короткий созвон — и вы знаете срок и цену. Или посчитайте сами за 2 минуты.

WhatsApp
Другие проблемы, которые чиним
CORS-ошибка в проекте, написанном с ИИ →Аудит безопасности проекта на вайб-коде →Как настроить git и не терять рабочие версии проекта →Белый экран и ошибки в консоли →ИИ ломает код при каждой правке →Как добавить оплату в проект, сделанный с ИИ →Как настроить бэкапы базы данных →Как передать проект на вайб-коде программисту →Как подключить домен и HTTPS к своему проекту →Как задеплоить проект из Cursor на свой сервер →Проект на Next.js не собирается →Проект из Lovable не работает после экспорта →Перенос проекта с Bolt или Replit на свой сервер →Перенос проекта с Firebase или Supabase на свой сервер →Приложение тормозит после роста пользователей →Рефакторинг после вайб-кода: как сделать код поддерживаемым →Сайт работает локально, но не на хостинге →Ошибки Supabase RLS: база пустая или запись не проходит →Утёк API-ключ OpenAI или Supabase: что делать →
Напишите нам
Заявка

Обсудим задачу?

Ответим в течение часа в рабочее время. Или сразу напишите в WhatsApp.

Нажимая «Отправить», вы соглашаетесь на обработку контактных данных для ответа на заявку.

Пройти →