การตรวจสอบสิทธิ์และความปลอดภัย
API v2: คีย์, รายการ IP ที่อนุญาต, HMAC
โมเดลการเข้าถึง. คำขอทั้งหมดไปยัง API v2 ทำงานโดยใช้คู่คีย์
publicKey/secretKey.
คีย์ถูกสร้างขึ้นในบัญชีผู้ใช้หรือผ่าน v1 (/api/v1/users/generate-api-key).
การจำกัดตาม IP. เมื่อสร้างคีย์ ให้ระบุที่อยู่ IP ที่เชื่อถือได้ใน
whiteListIp.
คำขอจากภายนอกรายการนี้จะถูกปฏิเสธ
การลงนามคำขอแต่ละครั้ง. ส่วนหัว (headers) ต้องประกอบด้วย:
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/เซสชัน
สองวิธีในการเข้าถึง. สามารถตรวจสอบด้วยตนเองผ่านทีมสนับสนุน — ขอการเข้าถาวร (ส่งโปรเจกต์ ปริมาณ การ whitelist 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 key v2 ผ่าน
/api/v1/users/generate-api-key.
คำแนะนำสำหรับการจัดเก็บคีย์และโทเค็น
อย่าเก็บไว้ในโค้ด/รีโพ. ใช้ environment variables หรือ secret managers (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, โทเค็น หรือ headers การตรวจสอบสิทธิ์เต็มรูปแบบ; ให้บันทึกเฉพาะแฮช/ID และ response codes
ใช้ TLS ทุกที่. ใช้เฉพาะ
https. ปฏิเสธการ redirect ไปยังโปรโตคอลที่ไม่ปลอดภัย
คุกกี้ที่ปลอดภัย. สำหรับ v1 ใช้ flags
HttpOnly, Secure; เก็บโทเค็นไว้เฉพาะใน session ที่ปลอดภัย
การจัดการข้อผิดพลาดและ retry. หาก 429/5xx — ใช้ backoff แบบทวีคูณ ตรวจสอบ body และความถูกต้องของพารามิเตอร์ที่จำเป็น
หลักการสิทธิ์น้อยที่สุด. มอบคีย์และโทเค็นให้บริการเฉพาะเมื่อจำเป็น หลีกเลี่ยงการแชร์โดยไม่จำเป็น