Cookie security attributes kiểm soát cookie exposure và transmission.
- HttpOnly: cookie không accessible qua document.cookie hay JavaScript — ngăn XSS đánh cắp session token; vẫn tự động gửi trong HTTP requests.
- Secure: cookie chỉ gửi qua HTTPS — ngăn network sniffing, bắt buộc trong production.
- SameSite: Strict (không gửi cookie trong bất kỳ cross-site request nào — kể cả click link từ email đến site của bạn; rất secure nhưng friction cao cho federated services); Lax (gửi trong top-level navigation GET nhưng không trong img/iframe/fetch cross-site — good balance, default Chrome từ 2020); None (gửi tất cả cross-site — phải kết hợp với Secure, dùng cho third-party cookies như OAuth flows, embedded widgets).
- Best practice cho session cookies: Set-Cookie: sessionId=abc; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600.
- Cookie prefixes tăng security: __Secure- prefix (phải có Secure flag, HTTPS only); __Host- prefix (phải có Secure, không có Domain, Path=/ — strongest, pinned to host).
- Max-Age vs Expires: Max-Age (seconds relative) ưu tiên hơn Expires (absolute datetime) vì không phụ thuộc client clock.
- Session vs Persistent cookies: session cookie (không có Max-Age/Expires) bị xóa khi browser close; persistent có expiry.
- Third-party cookies: đang bị phase out bởi browsers — Privacy Sandbox, Storage Access API là alternatives.