อย่าเก็บ Credentials ตรงๆ ใช้ Token แทน
Local Storage อ่านได้จาก JavaScript ทุกตัวบน Domain เดียวกัน (XSS Risk)
แนวทางที่ปลอดภัย
- Login สำเร็จ -> Server สร้าง **Random Token** (ไม่เกี่ยวกับ Password)
- บันทึก Token ใน Database พร้อม Expiry Date และ User ID
- ส่ง Token ให้ Client เก็บใน
localStorage.setItem('auth_token', token) - Request ต่อไป ส่ง Token ไปใน Header (
Authorization: Bearer <token>) - Server Verify Token + Expiry -> Authorized
- Logout/Expire -> ลบ Token จาก DB และ LocalStorage
ข้อดี
- Password ไม่อยู่ใน Browser เลย
- Token หมดอายุ/เพิกถอนได้
- แยก Device/Session ได้