Документация/О портале

Безопасность и секреты

Эти правила обязательны и не обсуждаются. Их нарушение может привести к краже партнёрского токена и финансовым потерям.

Главные правила#

  1. Секреты никогда не попадают в git. Ни в код, ни в README, ни в примеры, ни в JSON-шаблоны, ни в комментарии. В репозитории допустим только файл .env.example с пустыми значениями.
  2. На продакшене JWT живёт в data/oneclick.jwt (том Docker ./data) и/или в переменной окружения ONECLICK_JWT. Приоритет: непустой файл, затем env. Файл задаётся через страницу «Установка Partner JWT» (гейт по паролю INSTALL_GATE_PASSWORD) и подхватывается прокси без перезапуска.
  3. .env / .env.local — только локальная разработка (файлы в .gitignore). На VPS основной путь — страница установки, а не правка env вручную.
  4. Браузер никогда не видит токен. Все запросы к 1Click идут через серверный прокси (/api/proxy/1click/...). Прокси сам читает JWT (файл, затем env) и добавляет заголовок X-API-Key. В клиентском коде, в шаблонах и в сохранённых запросах токена нет и быть не может.
  5. В шаблонах — только плейсхолдеры: YOUR_JWT, YOUR_NEAR_ACCOUNT.near, DEPOSIT_ADDRESS_FROM_QUOTE. Реальные значения не сохраняются.
  6. Логи без секретов. Прокси не пишет в логи ни заголовки, ни тела запросов; строки, похожие на JWT, автоматически заменяются на [REDACTED_JWT].

Если токен утёк или нужна ротация#

Отдельной кнопки «Rotate» в дашборде нет: создайте новый ключ, затем отзовите старый.

  1. В Partner Dashboard запросите новый Distribution Channel JWT и скопируйте его.
  2. Сразу сохраните новый токен на странице установки (или обновите ONECLICK_JWT в локальном .env.local и перезапустите dev-сервер).
  3. В дашборде отзовите старый ключ (корзина → точное имя label → Delete). Старый JWT перестаёт работать сразу.
  4. Если токен попал в git — перевыпуска недостаточно, историю коммитов тоже нужно вычистить (обратитесь к разработчику).

Почему это важно#

Партнёрский JWT снимает платформенную комиссию 0.2% и привязан к вашему аккаунту дистрибьютора. Злоумышленник с вашим токеном может выполнять запросы от вашего имени. Кроме того, у 1Click нет тестовой сети — любые реальные свопы происходят с настоящими деньгами, поэтому проверяйте сценарии на маленьких суммах.

Проверка перед каждым коммитом#

  • git diff — просмотрите изменения глазами: нет ли строк, похожих на токены (eyJ...), приватных ключей, seed-фраз, реальных адресов с балансом.
  • Убедитесь, что .env, .env.local и data/*.jwt / data/*.api-key не отображаются в git status.

Единая страница установки: /api-keys-install (тот же INSTALL_GATE_PASSWORD).

ПровайдерФайлEnvЗаголовок прокси
1Clickdata/oneclick.jwtONECLICK_JWTX-API-Key
Relaydata/relay.api-keyRELAY_API_KEYx-api-key
LI.FIdata/lifi.api-keyLIFI_API_KEYx-lifi-api-key
SwapKitdata/swapkit.api-keySWAPKIT_API_KEYx-api-key
  • Приоритет: непустой файл → env. Права файла 0o600.

  • UI после сохранения показывает только намёк «…последние 6», не полное значение.

  • Браузер ключи не видит; клиентские auth-заголовки отбрасываются.

  • Relay: с referrer в quote ключ обязателен (401 UNAUTHORIZED_QUOTE).

  • LI.FI: ключ опционален, повышает лимиты (portal.li.fi).

  • SwapKit: ключ рекомендуется для POST /v3/quote (без ключа часто 403 Cloudflare). Каталог /providers и /tokens обычно доступны анонимно. Affiliate tiers — в Partner Dashboard (доки).