Brskalniki so v zadnjem času poostrili varnost. Če na svoji strani vidiš opozorilo glede SameSite atributa, to pomeni, da moraš brskalniku eksplicitno povedati, kako naj ravna s tvojimi piškotki v različnih kontekstih.
Kaj sploh je SameSite?
Atribut SameSite v HTTP glavi piškotkov nadzoruje, kdaj se piškotek pošlje strežniku. Njegov glavni namen je zaščita pred:
- CSRF napadi: Preprečuje, da bi zlonamerna stran uporabila tvojo sejo.
- Uhajanje informacij: Omejuje deljenje piškotkov med različnimi domenami.
Možne vrednosti atributa
- Strict: Najstrožja nastavitev. Piškotek se pošlje le, če zahteva prihaja z iste domene.
- Lax: Privzeta varna nastavitev. Piškotek se pošlje pri navigaciji znotraj iste domene in pri nekaterih zunanjih povezavah, ne pa v iframe-ih.
- None; Secure: Piškotek se pošlje vedno, tudi v tretjeosebnih (third-party) kontekstih. Nujno zahteva varno HTTPS povezavo.
Kako to rešiti v kodi?
PHP (7.3+)
setcookie("PH_HPXY_CHECK", "vrednost", [
"SameSite" => "None",
"Secure" => true, // Obvezno za None
"HttpOnly" => true
]);
JavaScript
document.cookie = "PH_HPXY_CHECK=vrednost; SameSite=None; Secure";
Nginx / Apache
Če nastavljaš piškotke na nivoju strežnika:
# Nginx
add_header Set-Cookie "PH_HPXY_CHECK=vrednost; Path=/; SameSite=None; Secure";
Apache
Header always add Set-Cookie "PH_HPXY_CHECK=vrednost; Path=/; SameSite=None; Secure"