Cookie Secure, HttpOnly, SameSite: quello che il banner non imposta
Data Pubblicazione: 17/09/2026 | | Sicurezza

Cookie Secure, HttpOnly, SameSite: quello che il banner non imposta

Il banner chiede un consenso. Non mette HttpOnly sulla sessione. Secure, HttpOnly e SameSite si spediscono nell’header di risposta. SameSite=None richiede Secure.

Il banner dei cookie chiede un consenso. Non imposta i flag sul cookie di sessione. Secure, HttpOnly e SameSite si scrivono nell’header di risposta che imposta il cookie, lato server. Un plugin di CMP che inserisce uno script in pagina può coprire il marketing. Sulla sessione, se l’applicazione spedisce il cookie di runtime senza flag, lo script del banner non ci arriva.

In breve: Secure manda il cookie solo su HTTPS. HttpOnly lo toglie agli script in pagina. SameSite=Lax o Strict limita l’invio cross-site; None richiede Secure. I prefissi Host e Secure sul nome vincolano il cookie. OWASP li tratta come attributi di sessione, non come testo del banner. Verifica del 17 settembre 2026 su MDN e sulle cheat sheet OWASP.

Cosa trovi in questo articolo

  1. Cosa fa un cookie, e cosa non è il banner

  2. Tre flag: Secure, HttpOnly, SameSite

  3. Prefissi sul nome: Host e Secure

  4. SameSite non sostituisce il token anti-forgery

  5. Errori da evitare

  6. In sintesi

Cosa fa un cookie, e cosa non è il banner

MDN, nella guida Using HTTP cookies, tratta il cookie come coppia nome-valore che il server spedisce in un header di risposta e il browser rimanda. Per più cookie, più header. Quell’header è filtrato dal browser verso il JavaScript in pagina: lo script non lo legge. Il cookie di sessione nasce lì, non nel testo del popup «Accetta tutti».

Il banner, sotto GDPR, è un consenso su cookie non necessari. Marketing, profilazione, terze parti. La sessione di login, il carrello, il token anti-forgery in cookie, restano mestiere dell’applicazione. Un CMP che gira in pagina non può aggiungere HttpOnly a un cookie che il server ha già messo senza. Può, al più, scrivere altri cookie da script: quelli, per costruzione, non sono HttpOnly.

Questo pezzo sta nel cluster Sicurezza, accanto a HSTS, CSP e al certificato TLS. HSTS tiene il browser su HTTPS. La CSP limita gli script. I flag del cookie dicono al browser quando rimandare quel nome, e a chi in pagina è vietato leggerlo. Tre strati. Il plugin «cookie banner premium» non è il terzo.

Tre flag: Secure, HttpOnly, SameSite

OWASP, nella Session Management Cheat Sheet, elenca gli attributi del cookie di sessione. MDN ne fissa la sintassi nella guida sui cookie HTTP. Tre mestieri, e tre limiti:

AttributoCosa fa, se c’èCosa non fa da solo
SecureIl browser lo spedisce solo su HTTPSNon emette il certificato. Quello sta in TLS. Senza HSTS, la prima richiesta in chiaro resta un altro problema
HttpOnlyToglie il cookie all’API JavaScript dei cookie e agli script in paginaNon chiude un XSS. Un XSS può ancora fare richieste col cookie in automatico. Serve la CSP e output sanificato
SameSite=StrictIl cookie non parte su nessuna richiesta cross-siteRompe i ritorni da un pagamento o da un IdP su un altro dominio, se la sessione sta su quel cookie
SameSite=LaxParte sui GET top-level cross-site, non sui POST cross-site classiciNon è una difesa CSRF completa: OWASP lo mette tra le difese in profondità
SameSite=None con SecureParte anche in contesto third-partyMDN: None richiede Secure. Senza, il browser scarta il cookie

Esempio minimo di sessione, da tenere sul server, non in un snippet del tema: nome del cookie, percorso radice, flag Secure, flag HttpOnly, SameSite Lax. Si spedisce come header di risposta, non si incolla nel HTML del tema.

I browser moderni trattano come Lax un cookie senza SameSite. Non è una scusa per omettere l’attributo: il default è un comportamento del browser, non un contratto della tua applicazione. Max-Age e Expires decidono quanto vive; un attributo Domain troppo largo (l’intero eTLD+1) allarga la superficie ai sottodomini. OWASP consiglia Path e Domain stretti.

Prefissi sul nome: Host e Secure

MDN documenta i cookie name prefixes. Non sono un plugin. Sono un vincolo sul nome, applicato dal browser:

PrefissoIl browser lo accetta solo se
prefisso Secure sul nomeC’è Secure, e la risposta è su HTTPS
prefisso Host sul nomeC’è Secure, percorso radice, e non c’è l’attributo Domain

Il prefisso Host è il nome di sessione più stretto che il browser sa imporre: vale solo per quell’host, solo su HTTPS, solo sulla radice. Un sottodominio compromesso non se lo fa spedire allargando Domain. Se il CMS ha bisogno del cookie su www e su un host applicativo, il prefisso Host non è la scelta giusta: si fa un inventario, non si spegne il prefisso «perché il plugin login non parte».

SameSite non sostituisce il token anti-forgery

La CSRF Prevention Cheat Sheet mette SameSite tra le difese in profondità. Poi elenca i limiti: non copre i sottodomini dello stesso sito come se fossero origini distinte nel senso che conta per te; Lax lascia passare i GET top-level; i cookie None per i widget third-party restano esposti. OWASP continua a chiedere un token (synchronizer o double-submit firmato) sulle operazioni che cambiano stato.

Un plugin «anti-CSRF» che gira in pagina, come il plugin «anti-XSS» del pezzo sulla CSP, è un altro script. Il token va legato alla sessione lato server. SameSite riduce la finestra. Non la chiude.

Errori da evitare

  • Credere che il banner del consenso abbia «messo i cookie in sicurezza».

  • Sessione senza HttpOnly: uno script in pagina può leggere il valore del cookie.

  • Sessione senza Secure su un sito che «ha già HTTPS»: il cookie parte anche sul primo hop in chiaro, se ci arrivi.

  • SameSite=None senza Secure: il browser lo scarta.

  • SameSite=Strict sulla sessione di un checkout che torna da un PSP su un altro dominio, e poi sorprendersi dei logout.

  • Allargare Domain all’intero albero di host «per fare funzionare il sottodominio», e regalare il cookie a ogni nome di quell’albero.

  • Confondere il cookie di sessione con i cookie del CMP: due header, due vite, due rischi.

In sintesi

Il cookie di sessione è un header di risposta. Si spedisce con Secure, HttpOnly e un SameSite scelto. I prefissi Host e Secure sul nome stringono il vincolo. Il banner del consenso è un altro mestiere. SameSite non sostituisce il token anti-forgery. HSTS, CSP e TLS restano tre strati a parte: il plugin che promette tutti e quattro è un quarto script.

Fonti

Immagine di copertina: rack di server. Foto di Derrick Coetzee, Wikimedia Commons, licenza CC0 (pubblico dominio). I flag del cookie si impostano sulla risposta HTTPS, non da uno script in pagina.

Questo contenuto è stato realizzato con il supporto di sistemi di intelligenza artificiale e successivamente verificato secondo le linee editoriali della redazione.

Domande Frequenti

No. Il banner è un consenso su cookie non necessari. Secure, HttpOnly e SameSite si impostano nell'header di risposta che crea il cookie, lato server. Un plugin CMP in pagina non può aggiungere HttpOnly a un cookie di sessione già emesso senza.
MDN: impedisce a JavaScript in pagina di leggere il valore del cookie. Riduce il furto di sessione in caso di XSS. Non elimina l'XSS: un script può comunque fare richieste con il cookie in automatico. Serve anche una CSP e output sanificato.
Strict: il cookie non parte su richieste cross-site. Lax: parte sui GET top-level, non sui POST cross-site classici; è il default dei browser moderni se l'attributo manca. None: parte anche third-party e, scrive MDN, richiede Secure. OWASP tratta SameSite come difesa in profondità, non come sostituto del token CSRF.
Vincoli sul nome, applicati dal browser. Il prefisso Secure richiede l'attributo Secure su HTTPS. Il prefisso Host richiede Secure, percorso radice e l'assenza dell'attributo Domain: il cookie vale solo per quell'host.
No. La cheat sheet OWASP CSRF lo mette tra le difese in profondità e ne elenca i limiti: Lax lascia passare i GET top-level, None resta esposto sui widget third-party. Sulle operazioni che cambiano stato resta un token lato server.

Potrebbe interessarti anche...