Аутентифікація та безпека
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. Перевіряйте тіло відповіді та коректність обов’язкових параметрів.
Доступ за принципом найменших привілеїв. Ключі та токени видавайте сервісам рівно там, де вони потрібні; не діліться ними між командами/мікросервісами без потреби.