ความปลอดภัย (Security)
ความปลอดภัยไม่ใช่ฟีเจอร์ที่คุณติดเพิ่มเข้าไปทีหลัง แต่เป็นชุดของเรื่องที่ต้องคำนึงถึงในทุก endpoint โมดูลนี้ครอบคลุมเรื่องที่ API ทุกตัวต้องจัดการ
พื้นผิวด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “พื้นผิวด้านความปลอดภัย”flowchart TD API --> T[Transport: HTTPS everywhere] API --> AuthN[Authentication: who are you?] API --> AuthZ[Authorization: what may you do?] API --> In[Input: validate everything] API --> Ab[Abuse: rate limiting & quotas]
- Transport — ให้บริการผ่าน HTTPS เท่านั้น อย่ารับ credentials ผ่าน HTTP แบบ plain เด็ดขาด
- Authentication — ระบุว่าผู้เรียกใช้คือใคร (API key, token)
- Authorization — ตัดสินว่าผู้เรียกใช้คนนั้นทำอะไรได้บ้าง
- Input — มองทุกไบต์ที่มาจาก client ว่าเชื่อถือไม่ได้ ต้อง validate ทุกครั้ง
- Abuse — ปกป้อง API จากการถูกถล่มจนล้นหรือถูก scrape ข้อมูล
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”- Authn vs authz — ความแตกต่าง และ
401กับ403 - Tokens, JWT & OAuth — bearer token และการมอบสิทธิ์การเข้าถึง (delegated access)
- CORS — browser ควบคุมการเรียกข้าม origin อย่างไร
- Rate limiting & validation — การจำกัดอัตราการเรียก และการไม่เชื่ออะไรเลย