Cookie сесії - фактично ключ до облікового запису. Атрибути визначають, хто й коли може його отримати:
HttpOnly- cookie недоступна з JavaScript (document.cookie). XSS не зможе її вкрасти. Для cookie сесії - обов'язково.Secure- cookie передається лише по HTTPS. Без нього її можна перехопити в незашифрованому з'єднанні.SameSite- чи надсилати cookie в запитах з інших сайтів:Lax(Chromium застосовує його до cookie без атрибута, але покладатися на це не варто - ставте явно) - так при звичайних переходах за посиланням, ні - у міжсайтовихPOST,fetch,iframe. Добрий захист від CSRF.Strict- ніколи в міжсайтових запитах. Безпечніше, але користувач, що перейшов за посиланням з пошти, опиниться незалогіненим.None- завжди (лише разом ізSecure). Потрібно для вбудованих віджетів і SSO між різними доменами.
Domain- без нього cookie належить лише точному хосту.Domain=example.comвідкриває її всім піддоменам, зокрема менш захищеним.Path,Max-Age/Expires- область і термін дії.
Set-Cookie: session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax
Префікси назв - додатковий захист, який перевіряє сам браузер:
__Host-session- лише зSecure, безDomain, зPath=/: cookie не може встановити чи перезаписати піддомен.__Secure-- лише зSecure.
У Laravel це налаштовується в config/session.php: secure (SESSION_SECURE_COOKIE=true на проді), http_only, same_site, domain. Cookie застосунку ще й шифруються, тож їхній вміст не прочитати й не підробити без APP_KEY.