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

Токены доступа и секреты

  • Токены доступа Meta шифруются при хранении алгоритмом AES-256-GCM (случайный IV, тег аутентичности) до записи в базу данных. Ключ шифрования выводится из секрета, который существует только в окружении приложения — отдельно от базы и её резервных копий; дамп базы сам по себе токены не раскрывает.
  • Токены никогда не показываются обратно ни в интерфейсе, ни в API после подключения — только их состояние (действителен, истекает, какие разрешения содержит).
  • Каждый вызов Meta Graph API подписывается appsecret_proof, поэтому утёкший токен нельзя использовать вне наших серверов. Кабинеты подключаются только через Facebook Login for Business с приложением AdWitch: каждый токен выдаёт Meta нашему приложению, а при подключении он проверяется через debug_token — фиксируются приложение, валидность, тип, срок действия и разрешения. Вставленные или импортированные токены мы не принимаем.
  • Пароли хранятся в виде bcrypt-хэшей. Для любого аккаунта доступна двухфакторная аутентификация (TOTP, 6 цифр / 30 секунд); секрет TOTP хранится зашифрованным по той же схеме, что и токены.
  • Сброс пароля отзывает все существующие сессии аккаунта. Отдельные сессии также могут быть отозваны на стороне сервера.

Что мы запрашиваем у Meta и зачем

При подключении через «Continue with Facebook» AdWitch запрашивает эти разрешения и никакие другие:

РазрешениеДля чего
ads_readЧтение кампаний, групп, объявлений, статистики и статуса доставки — для отчётов, мониторинга и анализа агентом.
ads_managementСоздание и правка кампаний, бюджетов, аудиторий, креативов и автоматических правил — когда вы просите агента или когда автопилот переведён в режим с правом действовать.
business_managementСписок Business Manager и рекламных кабинетов, к которым у вас есть доступ, чтобы выбрать, какие подключить.
pages_show_list, pages_read_engagementСписок Страниц (и связанных Instagram-аккаунтов), от имени которых можно публиковать объявления, и чтение комментариев для модерации.
pages_manage_adsПубликация объявлений от имени Страницы, которой вы управляете.
public_profileИдентификация пользователя Facebook, выполнившего подключение (нужна, чтобы обрабатывать колбэки Meta об отзыве доступа и удалении данных).

Для работы только на чтение (отчёты, мониторинг) достаточно ads_read; платформа фиксирует, какие разрешения реально есть у токена, и отказывает в действиях на запись при отсутствии ads_management — вместо того чтобы падать на полпути.

Изоляция команд и роли

  • Каждый рекламный кабинет, кампания, креатив, диалог и файл принадлежит ровно одной команде. Каждый запрос к базе данных в API ограничен командой текущей сессии; межкомандных эндпоинтов нет.
  • Роли внутри команды: Owner, Admin, Manager, Analyst и Viewer. Подключение кабинетов, настройки автопилота и биллинг доступны только старшим ролям; Viewer и Analyst не могут ничего изменить в Meta.
  • Сгенерированные креативы и медиавложения хранятся в Cloudflare R2. Постоянные ссылки обслуживаются API с проверкой доступа команды; временные подписанные ссылки предоставляют доступ браузеру и провайдерам. Файлы, загруженные до переезда, копируются из CDN Bunny.net в R2; зона Bunny удаляется, как только копия проверена.
  • Сотрудники AdWitch могут заглянуть в рабочее пространство клиента только через явную сессию поддержки, которая помечена в каждом запросе; таким сессиям закрыт доступ к административным функциям.

Защита приложения и сети

  • Весь трафик идёт по HTTPS. API отдаёт строгие заголовки безопасности (HSTS, Content-Security-Policy, защита от встраивания во фреймы).
  • Изменяющие запросы защищены от CSRF: API требует same-site-запрос или разрешённый origin.
  • Вход, регистрация, AI-эндпоинты и API в целом ограничены по частоте запросов на клиента.
  • Исходящие запросы, инициированные пользовательским вводом (загрузка картинки по URL, адрес вебхука), проходят через SSRF-безопасный клиент: DNS резолвится один раз, приватные и link-local диапазоны отклоняются, проверенный адрес закрепляется, каждый редирект проверяется заново.
  • Входящие вебхуки аутентифицируются до любой обработки: доставки Meta и Stripe проверяются по подписи (колбэки Meta дополнительно проверяются на свежесть и повтор); Higgsfield подпись не присылает, поэтому его URL колбэка содержит секретный токен, производный от секрета нашего приложения, и любой запрос без верного токена отклоняется.
  • Действия чат-агента на запись в Meta проходят через серверный шлюз подтверждения: аргументы инструмента валидируются на сервере, а действие выполняется только после вашего подтверждения в диалоге — на каждый ход и на каждый инструмент.

Субпроцессоры

Мы передаём данные следующим провайдерам — только в объёме, нужном для используемой вами функции:

ПровайдерНазначениеКакие данные
Meta PlatformsСама рекламная платформаВсё, что вы просите агента прочитать или изменить в кабинетах
AnthropicЯзыковая модель агентаТекст диалога, метрики кампаний и тексты креативов, включённые в диалог
HiggsfieldГенерация изображений и видеоПромпты и референсы, которые вы даёте для креативов
Cloudflare R2Хранилище сгенерированных и загруженных медиаФайлы креативов
Bunny.netМедиа, загруженные до переезда в R2 (выводится из работы)Файлы креативов
StripeОплата картойПлатёжные данные (обрабатывает провайдер; AdWitch не хранит номера карт)
ResendТранзакционная почтаE-mail, коды подтверждения, уведомления
TelegramУведомления и бот поддержки (по желанию)Telegram user id и сообщения, которые вы решили получать

База данных приложения и кэш работают на серверах, которыми мы управляем сами; они не делятся с нагрузками других арендаторов.

Хранение и удаление

  • Колбэки Meta обрабатываются автоматически. Когда вы удаляете AdWitch в настройках Facebook (отзыв доступа) или отправляете запрос на удаление данных через Meta, платформа отзывает сохранённые токены и отключает все подключения кабинетов, сделанные этим пользователем Facebook, во всех командах. Запрос на удаление получает код подтверждения и страницу статуса; записи статуса хранятся 90 дней.
  • Удаление аккаунта и рабочего пространства выполняется по политике удаления данных: запрос на privacy@adwitch.ai исполняется в течение 30 дней и удаляет данные профиля, настройки кабинетов и токены, историю кампаний и креативов, аналитику, сессии и файлы базы знаний.
  • Удаление рекламного кабинета внутри приложения немедленно удаляет запись о подключении вместе с сохранённым токеном.
  • Платёжные записи хранятся столько, сколько требует налоговое и бухгалтерское законодательство, без данных карт.

Ответственное раскрытие

Если вы считаете, что нашли уязвимость в AdWitch, напишите на security@adwitch.ai с шагами воспроизведения. Тот же контакт опубликован в /.well-known/security.txt.

  • Мы подтверждаем получение в течение 3 рабочих дней и держим вас в курсе до устранения.
  • Пожалуйста, дайте нам разумное время на исправление до публичного раскрытия, не обращайтесь к чужим данным, не запускайте автоматические сканеры против продакшена и не нарушайте работу сервиса.
  • Мы не будем преследовать юридически исследователей, которые добросовестно следуют этим правилам. Платной bug-bounty-программы сейчас нет; по желанию указываем автора находки в журнале изменений.

Сертификаций соответствия (SOC 2, ISO 27001) на данный момент нет; о любом аудите мы объявим на этой странице.

Вопросы по этой странице: security@adwitch.ai. URL политики: https://adwitch.ai/security