เมื่อวาน เวลา 05:48 • การศึกษา
Website By Shoper Gamer

API key คืออะไร

โดย
ในโลกของระบบคลาวด์และ บริการเว็บที่เชื่อมโยงถึงกัน API Key ได้กลายเป็นองค์ประกอบสำคัญที่ช่วยให้แอปพลิเคชันต่างๆ สามารถสื่อสาร และ ใช้งานบริการจากผู้ให้บริการอื่นได้อย่างปลอดภัย และ มีประสิทธิภาพ บทความนี้จะพาคุณเจาะลึก ทำความเข้าใจกับ API Key ตั้งแต่พื้นฐานไปจนถึงแนวทางการรักษาความปลอดภัยที่ถูกต้อง
  • ​API Key คืออะไร
API Key คือ รหัสลับเฉพาะตัว ที่ใช้เพื่อระบุตัวตน และ ให้สิทธิ์การเข้าถึง API (Application Programming Interface) โดยทำหน้าที่เหมือน "กุญแจดิจิทัล" ที่อนุญาตให้แอปพลิเคชันของคุณร้องขอข้อมูล หรือ บริการจากเซิร์ฟเวอร์ภายนอก
  • ​ลักษณะสำคัญ
○ รหัสไม่ซ้ำกัน
สร้างขึ้นเฉพาะสำหรับผู้ใช้ หรือ แอปพลิเคชันแต่ละราย
○ ใช้ยืนยันตัวตน (Authentication) เพื่อพิสูจน์ว่าผู้ที่ส่งคำขอนั้นเป็นใคร
○ ควบคุมสิทธิ์การเข้าถึง สามารถกำหนดได้ว่า Key นี้เข้าถึงฟังก์ชันใดได้บ้าง
○ รูปแบบ มักเป็นชุดตัวอักษรและ ตัวเลขที่มีความยาวตั้งแต่ 32-64 ตัวอักษร
  • ​API Key ทำงานอย่างไร
☆ กลไกการทำงานพื้นฐาน
1) ส่งคำขอ
แอปพลิเคชันของคุณส่งคำขอ (Request) ไปยัง API Server พร้อมแนบ API Key ไปด้วย
2) ตรวจสอบ
เซิร์ฟเวอร์ตรวจสอบ Key กับ ฐานข้อมูล เพื่อยืนยันว่า Key นั้นถูกต้อง และ ยังไม่หมดอายุ
3) อนุมัติสิทธิ์
เซิร์ฟเวอร์ตรวจสอบสิทธิ์ (Authorization) ว่า Key นั้นสามารถเข้าถึงข้อมูลที่ร้องขอได้หรือไม่
4) ตอบกลับ
หากทุกอย่างถูกต้อง เซิร์ฟเวอร์จะตอบกลับผลลัพธ์ (เช่น ข้อมูลสภาพอากาศ หรือ การยืนยันการชำระเงิน) ไปยังแอปพลิเคชัน
☆ กระบวนการทำงาน (Sequence Diagram)
```mermaid
sequenceDiagram
participant U as User/App
participant S as API Server
participant D as Database
 
U->>S: ส่งคำขอพร้อม API Key
S->>D: ตรวจสอบ API Key (ถูกต้อง?)
D->>S: ยืนยันความถูกต้องและสิทธิ์
S->>U: ตอบกลับผลลัพธ์
```
  • ​ประเภทของ API Key
1) Public API Key
○ ใช้สำหรับ: ระบุแอปพลิเคชันเพื่อวัตถุประสงค์ในการติดตามการใช้งาน
○ ความปลอดภัย: ค่อนข้างต่ำ สามารถเปิดเผยในโค้ดฝั่ง Front-end ได้
○ ตัวอย่าง: Google Maps API ที่ใช้แสดงแผนที่บนหน้าเว็บ (เพราะ Key นี้ไม่ได้เข้าถึงข้อมูลส่วนตัวของผู้ใช้)
2) Secret API Key (กุญแจลับ)
○ ใช้สำหรับ: ยืนยันตัวตนเพื่อเข้าถึงฟังก์ชันที่มีความอ่อนไหวสูง
○ ความปลอดภัย: สูงมาก ต้องเก็บเป็นความลับ และ ใช้งานในฝั่ง Server-side เท่านั้น
ตัวอย่าง: Key ของ Payment Gateway (เช่น Stripe Secret Key) หรือ Key สำหรับการจัดการบัญชีผู้ใช้
3) OAuth Tokens
○ ใช้สำหรับ: การให้สิทธิ์การเข้าถึงแบบจำกัดขอบเขต (Scoped Authorization)
○ ความปลอดภัย: สูงมาก Key จะมีอายุสั้น และ ใช้เพื่อเข้าถึงข้อมูลส่วนตัวของผู้ใช้ (เช่น รายชื่อเพื่อนใน Facebook)
○ ตัวอย่าง: การที่แอปพลิเคชันขออนุญาตเข้าถึงรูปภาพใน Google Photos ของคุณ
  • ​ประโยชน์
✅ ควบคุมการเข้าถึง
กำหนดได้ว่าใครเข้าถึงอะไรได้บ้าง
✅ ติดตามและวิเคราะห์
ตรวจสอบการใช้งาน (Log) และ สถิติของแอปพลิเคชันต่างๆ
✅ ป้องกันการใช้งานเกินโควต้า
จำกัดจำนวนคำขอ (Rate Limiting) เพื่อป้องกันการใช้งานที่ผิดปกติ
✅ เพิ่มความปลอดภัย
ใช้กลไกการเข้ารหัส และ การยืนยันตัวตนที่รัดกุมกว่าการเข้าถึงแบบสาธารณะ
  • ​แนวทางการรักษาความปลอดภัยของ API Key
เนื่องจาก API Key มีอำนาจในการเข้าถึงข้อมูล หรือ ทำธุรกรรมได้ การเก็บรักษาจึงเป็นสิ่งสำคัญที่สุด
1) ห้ามเก็บในโค้ดโดยตรง (Hardcoding)
○ วิธีที่ไม่ปลอดภัย
`const API_KEY = 'sk_test_your_secret_key_here';` (เมื่อโค้ดนี้ถูกเผยแพร่ Key จะรั่วทันที)
○ วิธีที่ปลอดภัย ใช้ Environment Variables (ตัวแปรสภาพแวดล้อม) ซึ่งเป็นวิธีมาตรฐานในการเก็บค่าลับที่แยกออกจาก Source Code
2) กำหนดขอบเขตและจำกัดสิทธิ์
○ กำหนด IP Whitelist อนุญาตให้ Key นั้นใช้งานได้เฉพาะจาก IP Address ของเซิร์ฟเวอร์ที่คุณกำหนดเท่านั้น
○ จำกัดจำนวนคำขอ (Rate Limiting) กำหนดโควต้าการใช้งานต่อนาที/ต่อวัน
○ กำหนดขอบเขต (Scopes) เช่น Key นี้ใช้ได้แค่ 'อ่านข้อมูล' ห้ามใช้ 'แก้ไข' หรือ 'ลบ'
3) การหมุนเวียน (Key Rotation)
○ เปลี่ยน API Key เป็นประจำ กำหนดตารางเวลาในการยกเลิก Key เก่าและสร้าง Key ใหม่ เพื่อลดความเสี่ยงหาก Key ถูกขโมยไป
○ มี Emergency Revoke เตรียมช่องทางในการยกเลิก (Revoke) Key ทันที หากตรวจพบความผิดปกติ
  • ​วิธีการส่ง API Key ที่นิยมใช้
เมื่อแอปพลิเคชันส่งคำขอไปยังเซิร์ฟเวอร์ API Key สามารถแนบไปได้หลายรูปแบบ
1) Query Parameters (เหมาะสำหรับ Public Key)
API Key จะถูกต่อท้ายใน URL
```
```
2) HTTP Headers (เหมาะสำหรับ Secret Key)
Key จะถูกซ่อนอยู่ในส่วนหัวของคำขอ (นิยมใช้มากที่สุดสำหรับความปลอดภัยสูง)
```http
GET /api/data HTTP/1.1
Authorization: Bearer YOUR_SECRET_KEY // หรือ
X-API-Key: YOUR_SECRET_KEY
```
✏️ Shoper Gamer
  • ​Frontend คืออะไร 👇
  • ​API คืออะไร 👇
  • ​Backend คืออะไร 👇
Credit :
👇
  • ​https://cloud.google.com/endpoints/docs/openapi/when-why-api-key
  • ​https://www.fortinet.com/resources/cyberglossary/api-key
  • ​https://blog.hubspot.com/website/api-keys
  • ​https://apipheny.io/what-is-an-api-key/

ดูเพิ่มเติมในซีรีส์

โฆษณา