Безопасность API-ключей Wildberries
SELLTRIX просит у вас два разных API-ключа Wildberries — финансовый и отзывный. Это не для нашего удобства: разделение прав даёт реальную защиту данных вашего магазина. Разбираем, почему так и как это работает.
Один ключ — одна большая дыра
Wildberries по умолчанию предлагает создать «Персональный» токен и поставить галочки на все 13 категорий доступа в режиме «Чтение и запись». Большинство SaaS-сервисов так и просят. Удобно: один ключ — и всё работает.
Проблема: такой ключ — это полные права на ваш магазин. Если он утечёт через логи SaaS, базу с кэшем, JS-ошибку или сотрудника — злоумышленник получит доступ ко всему сразу:
- выгрузит финансовые отчёты и узнает оборот вашего бизнеса;
- поменяет цены и скидки прямо в карточках товаров;
- отправит ответ от имени магазина на любой отзыв — навредит репутации;
- остановит/запустит рекламные кампании и сольёт бюджет в пустоту;
- сольёт остатки и поставки.
Как у нас: два ключа с минимумом прав
Финмодуль SELLTRIX только читает данные WB — ему не нужно ничего менять в вашем магазине. Расчёт прибыли, дашборд, ОПиУ, маржинальная прибыль, рука на пульсе — это всё чтение отчётов. Поэтому первый ключ — read-only.
Ответ на отзыв или вопрос покупателя — единственная функция, которая реально пишет в WB от имени магазина. Это второй ключ — он подключается отдельно и опционально.
- Контент
- Маркетплейс
- Статистика
- Финансы
- Аналитика
- Цены и скидки
- Поставки
- Возвраты
- Документы
- Пользователи
- Вопросы и отзывы
Что это даёт на практике
Изоляция blast radius. Утечка одного ключа не означает компрометацию другого. Это базовый принцип безопасности — minimum privilege. Раньше его соблюдали только корпоративные интеграции; теперь это есть и для селлера на маркетплейсе.
Гибкое управление командой. Если у вас есть SMM-сотрудник, который отвечает на отзывы, — можно дать ему отдельный отзывный ключ, не раскрывая финансовый. При увольнении SMM — отзовите только review-ключ, финансы не дёргайте.
Производительность. Лимит «Вопросы и отзывы» в WB — 1 запрос в секунду (при превышении блок на 60 секунд). Отдельный ключ не конкурирует с финмодулем за этот лимит — отзывы и финансовые отчёты загружаются параллельно.
Как создать ключи: пошагово
Шаг 1: финмодульный ключ (обязательно)
- Откройте ЛК WB → Настройки → Доступ к API
- Нажмите «Создать новый токен», выберите тип Персональный
- Поставьте 10 галочек: Контент, Маркетплейс, Статистика, Финансы, Аналитика, Цены и скидки, Поставки, Возвраты, Документы, Пользователи
- Уровень доступа: Только чтение — не «Чтение и запись»
- Скопируйте ключ (показывается один раз) и вставьте в форму подключения SELLTRIX
Шаг 2: отзывный ключ (опционально)
Если вы планируете отвечать на отзывы и вопросы из SELLTRIX — создайте второй ключ. Можно сразу при подключении магазина либо отложить и подключить позже, когда зайдёте в раздел «Отзывы и вопросы» — мы предложим сами.
- В том же разделе ЛК WB создайте второй Персональный токен
- Поставьте только одну галочку: «Вопросы и отзывы»
- Уровень доступа: Чтение и запись — публикация ответов требует write
- Скопируйте и вставьте в SELLTRIX (в onboarding или Mini App отзывов)
Безопасность на нашей стороне
Каждый ключ шифруется ключом Fernet перед сохранением в БД. Расшифрованный ключ существует только в памяти процесса при запросе к WB — после ответа выгружается. Мы не показываем ключи повторно даже вам: при необходимости обновления просто вводите новый — старый перезаписывается.
На карточке вашего кабинета в «Магазины» вы всегда видите статус каждого ключа отдельно — финмодульный и отзывный. Если ключ скоро истечёт (WB даёт 180 дней) — придёт уведомление в Telegram за 14, 7, 3 и 1 день до истечения, с указанием какой именно ключ нужно перевыпустить.
FAQ
У меня уже подключён единый ключ, нужно ли что-то делать?
Нет, ничего не сломалось — старый ключ продолжает работать. Но мы рекомендуем перейти на раздельные ключи в любой удобный момент: это снижает риск утечки. Сделать это можно из карточки кабинета: «Обновить ключи» → введите два новых и старый автоматически уйдёт в архив.
Можно ли использовать один ключ и для финмодуля, и для отзывов?
Технически — да, мы поддерживаем legacy-кабинеты с одним ключом. Но безопаснее два. Если вы только подключаетесь — заведите два сразу.
Что если я создал ключ с правом «Чтение и запись» вместо «Только чтение»?
Финмодуль будет работать одинаково — мы делаем только GET-запросы независимо от scope. Но если такой ключ утечёт, у злоумышленника будет больше возможностей. Лучше перевыпустить с «Только чтение».
Можно ли изменить набор категорий потом?
WB не позволяет редактировать существующий ключ — только создать новый. Если мы добавим новую фичу, которой нужна категория не из нашего списка (например, биддер потребует «Продвижение») — мы попросим перевыпустить ключ и пришлём подробную инструкцию.