احراز هویت و امنیت

Author profile photo
تیم Quickex
۱۰ شهریور ۱۴۰۴
~2 دقیقه خوانده شده

احراز هویت و امنیت

API v2: کلید، لیست سفید IP، 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/نشست

دو روش دسترسی. امکان تأیید دستی از طریق پشتیبانی وجود دارد — درخواست دسترسی دائمی (ارسال پروژه، حجم‌ها، لیست سفید IP، شناسه شریک)

احراز هویت JWT. توکن‌ها را از طریق
POST /api/v1/users/local/authenticate دریافت کنید (فیلدها:
email, password, browserFingerprint).
در پاسخ، سرور کوکی‌ها را تنظیم می‌کند:
session_id, access_token, refresh_token.

نمونه درخواست (JSON body)

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

توکن‌ها/کوکی‌ها برای فراخوانی متدهای محافظت‌شده v1 و تولید کلیدهای API v2 از طریق
/api/v1/users/generate-api-key استفاده می‌شوند.

توصیه‌ها برای ذخیره‌سازی کلیدها و توکن‌ها

در کد/ریپازیتوری ذخیره نکنید. از متغیرهای محیطی یا secret managerها (Vault, AWS Secrets Manager, GCP Secret Manager و غیره) استفاده کنید.

محیط‌ها را جدا کنید. کلیدهای جداگانه برای dev/stage/prod. برای dev —
whiteListIp محدود و مجوزهای کمتر

سطح حمله را به حداقل برسانید. درخواست‌های v2 را فقط از backend ارسال کنید، هرگز کلید یا HMAC را در frontend تولید نکنید.

چرخش منظم. کلیدها را به طور دوره‌ای بازتولید کنید، کلیدهای استفاده‌نشده را حذف کنید
(/api/v1/users/list-api-key, /api/v1/users/delete-api-key)

لاگ‌برداری بدون اسرار. هرگز
secretKey، توکن‌ها یا هدرهای کامل احراز هویت را در لاگ‌ها ذخیره نکنید؛ فقط هش‌ها/شناسه‌ها و کدهای پاسخ را ذخیره کنید.

TLS در همه‌جا. فقط از
https استفاده کنید. ریدایرکت به طرح‌های ناامن را رد کنید.

کوکی‌های امن. برای v1 از فلگ‌های
HttpOnly, Secure استفاده کنید؛ توکن‌ها را فقط در کانتینرهای نشست امن ذخیره کنید.

مدیریت خطا و retry. در صورت 429/5xx — backoff نمایی. بدنه پاسخ و صحت پارامترهای الزامی را بررسی کنید.

اصل حداقل دسترسی. کلیدها و توکن‌ها را فقط در جایی ارائه کنید که لازم است؛ بدون نیاز بین تیم‌ها/مایکروسرویس‌ها به اشتراک نگذارید.

این مقاله را به اشتراک بگذارید: