Cookie ที่ปลอดภัย: Secure, HttpOnly และ SameSite
ทำไมแอตทริบิวต์คุกกี้จึงสำคัญ
คุกกี้เซสชันคือกุญแจเข้าสู่บัญชีผู้ใช้ ถ้าถูกขโมยผ่าน XSS หรือส่งผ่าน HTTP เปล่า ผู้โจมตีจะสวมรอยได้ แนวทางรวมอยู่ที่ OWASP Session Management Cheat Sheet และ MDN Set-Cookie
Secure
ส่งคุกกี้เฉพาะบน HTTPS ลดการรั่วบนเครือข่ายเปิด เว็บที่บังคับ HTTPS อยู่แล้วควรติด Secure ทุกคุกกี้ยืนยันตัวตน
HttpOnly
ห้าม JavaScript อ่านคุกกี้ผ่าน document.cookie ช่วยลดการขโมยเซสชันเมื่อมี XSS แต่ไม่แทนที่การแก้ XSS
SameSite
SameSite จำกัดการส่งคุกกี้ไปกับคำขอข้ามไซต์
Strictไม่ส่งเมื่อมาจากไซต์อื่นLaxส่งเมื่อเป็น top-level navigation แบบ GET (ค่าเริ่มต้นใน Chrome)Noneส่งข้ามไซต์ได้ ต้องคู่กับSecureใช้เมื่อมีกรณีฝังข้ามไซต์ที่จำเป็นจริง
รายละเอียดอยู่ที่ MDN SameSite
คำนำหน้าชื่อคุกกี้
__Host- ตามแนว RFC 6265bis / MDN บังคับให้มี Secure, ไม่มี Domain, และ Path=/ ลดความเสี่ยงคุกกี้ถูกตั้งจากซับโดเมนอื่น
code
Set-Cookie: __Host-session=...; Secure; HttpOnly; Path=/; SameSite=Laxสรุป
คุกกี้เซสชันควรมีอย่างน้อย Secure, HttpOnly และ SameSite ที่ตั้งใจเลือก ไม่ใช้ SameSite=None โดยไม่จำเป็น