Автентифікація та безпека

Author profile photo
Команда Quickex
29 серпня 2025 р.
~2 хв. читання

Аутентифікація та безпека

API v2: ключ, IP whitelist, HMAC

Модель доступу. Усі запити до API v2 виконуються від імені пари ключів
publicKey/secretKey.
Ключі створюються в особистому кабінеті або через v1 (/api/v1/users/generate-api-key).

Обмеження за IP. Під час створення ключа вкажіть довірені адреси у
whiteListIp.
Запити поза цим списком відхиляються.

Підпис кожного запиту. У заголовках передаються:

X-Api-Public-Key — ваш publicKey

X-Api-Timestamp — рядок-мітка часу (наприклад, мілісекунди epoch)

X-Api-Signature — підпис HMAC-SHA256 у Base64

Формула підпису

StrToSign = timestamp + body + publicKey
Signature = Base64( HMAC_SHA256(StrToSign, secretKey) )

Де body — JSON без зайвих пробілів (використовуйте компактну серіалізацію).

Приклад (curl)

curl -X POST "https://quickex.io/api/v2/instruments/public/validate-address" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Public-Key: {PUBLIC_KEY}" \
  -H "X-Api-Timestamp: {TIMESTAMP_MS}" \
  -H "X-Api-Signature: {HMAC_BASE64}" \
  -d '{"currencyTitle":"USDT","networkTitle":"TRC20","address":"..."}'

API v1: JWT/session

Два шляхи доступу. Можлива ручна верифікація через підтримку — оформити постійний доступ (надати проєкт, обсяги, whitelist IP, партнерський ID).

JWT-аутентифікація. Отримайте токени через
POST /api/v1/users/local/authenticate (поля:
email, password, browserFingerprint).
У відповіді сервер встановлює cookies:
session_id, access_token, refresh_token.

Приклад запиту (тіло JSON)

{
  "email": "user@example.com",
  "password": "yourpassword",
  "browserFingerprint": "unique-browser-id"
}

Токени/cookies використовуються для викликів захищених методів v1 та для генерації API-ключів v2 через
/api/v1/users/generate-api-key.

Рекомендації щодо зберігання ключів і токенів

Не зберігати у коді/репозиторії. Використовуйте змінні середовища або сховища секретів (Vault, AWS Secrets Manager, GCP Secret Manager тощо).

Розділяйте середовища. Окремі ключі для dev/stage/prod. Для dev — обмежений
whiteListIp і звужені права.

Мінімізуйте поверхню атаки. Виконуйте запити до v2 лише з бекенду, ключі та HMAC ніколи не генеруйте на фронтенді.

Регулярна ротація. Періодично перевипускайте ключі, видаляйте невикористані
(/api/v1/users/list-api-key, /api/v1/users/delete-api-key).

Логування без секретів. У логах не записуйте
secretKey, токени та повні заголовки авторизації; логувати лише хеші/ідентифікатори та коди відповіді.

TLS всюди. Використовуйте тільки
https. Відхиляйте перенаправлення на незахищені схеми.

Захищені cookie. Для v1 використовуйте
HttpOnly, Secure прапорці; зберігайте токени лише у захищених контейнерах сесії.

Обробка помилок і ретраї. При 429/5xx — експоненціальний backoff. Перевіряйте тіло відповіді та коректність обов’язкових параметрів.

Доступ за принципом найменших привілеїв. Ключі та токени видавайте сервісам рівно там, де вони потрібні; не діліться ними між командами/мікросервісами без потреби.

Поділитись статтею: