[OUTDATED] Insiemi proprietari e attributo SameParty

Molte organizzazioni hanno siti correlati con nomi di dominio diversi, come brandx.site e fly-brandx.site, o domini per paesi diversi come example.com, example.rs, example.co.uk e così via.

I browser stanno passando a rendere obsoleti i cookie di terze parti per migliorare la privacy sul web, ma siti come questi spesso si affidano ai cookie per funzionalità che richiedono la gestione e l'accesso allo stato tra i domini (come il Single Sign-On e la gestione del consenso).

Gli insiemi proprietari possono consentire i nomi di dominio correlati di proprietà e gestiti dalla stessa entità di essere trattati come proprietari nelle situazioni in cui la prima parte e la terza parte vengono altrimenti trattate diversamente. I nomi di dominio all'interno di un insieme proprietario sono considerati della stessa parte e possono etichettare i cookie che si intende impostare o inviare nel contesto della stessa parte. L'obiettivo è trovare un equilibrio tra impedire il monitoraggio tra siti da parte di terze parti, mantenendo al contempo un percorso che non infrange casi d'uso validi.

La proposta di insiemi proprietari è attualmente in fase di test. Continua a leggere per scoprire come funziona e come provarla.

Qual è la differenza tra cookie proprietari e di terze parti?

I cookie non sono intrinsecamente proprietari o di terze parti, ma dipendono dal contesto attuale in cui sono inclusi. Ciò avviene su una richiesta nell'intestazione cookie o tramite document.cookie in JavaScript.

Se, ad esempio, video.site ha un cookie theme=dark, quando navighi video.site e viene effettuata una richiesta a video.site, si tratta di un contesto stesso sito e il cookie incluso è proprietario.

Tuttavia, se ti trovi su my-blog.site e incorpora un player iframe per video.site, quando la richiesta viene effettuata da my-blog.site a video.site si tratta di contesto tra siti e il cookie theme è di terze parti.

Diagramma che mostra un cookie di video.site in due contesti. Il cookie è "Same-site" quando il contesto di primo livello è anche video.site. Il cookie è cross-site quando il contesto di primo livello è my-blog.site con video.site in un iframe.

L'inclusione dei cookie è determinata dall'attributo SameSite del cookie:

  • Il contesto dello stesso sito con SameSite=Lax, Strict o None rende il cookie proprietario.
  • Contesto tra siti con SameSite=None, il cookie diventa di terze parti.

Tuttavia, questo non è sempre un punto chiaro. Immagina brandx.site sia un sito per la prenotazione di viaggi che usa anche fly-brandx.site e drive-brandx.site per separare i voli e il noleggio auto. Durante la prenotazione di un percorso, i visitatori passano da un sito all'altro per selezionare le varie opzioni e si aspettano che il "carrello degli acquisti" delle selezioni persiste su questi siti. brandx.site gestisce la sessione dell'utente con un cookie SameSite=None per consentirla in contesti tra siti. Tuttavia, lo svantaggio ora è che i cookie non hanno una protezione cross-site Request Forgery (CSRF). Se evil.site include una richiesta a brandx.site, questo cookie verrà incluso.

Il cookie è cross-site, ma tutti i siti sono di proprietà e gestiti dalla stessa organizzazione. Anche i visitatori capiscono che si tratta della stessa organizzazione e vogliono che la stessa sessione, ovvero un'identità condivisa, tra di loro.

Diagramma che mostra come un cookie può comunque essere incluso in un contesto tra siti se i siti fanno parte dello stesso insieme proprietario, ma che verrebbe rifiutato per contesti tra siti al di fuori dell'insieme.

Criterio degli insiemi proprietari

Insiemi proprietari propone un metodo per definire esplicitamente questa relazione su più siti di proprietà e gestiti dalla stessa parte. In questo modo, brandx.site potrebbe definire la relazione proprietaria con fly-brandx.site, drive-brandx.site e così via.

Il modello Privacy alla base delle varie proposte di Privacy Sandbox si basa sul concetto di partizionamento dell'identità per impedire il monitoraggio tra siti, tracciando un confine tra i siti che limiti l'accesso a qualsiasi informazione utilizzabile per identificare gli utenti.

Diagramma che mostra lo stato non partizionato in cui lo stesso cookie di terze parti è accessibile in più contesti tra siti, a differenza di un modello partizionato in cui ogni contesto di primo livello ha un'istanza separata del cookie cross-site che impedisce l'attività di collegamento tra quei siti.

Sebbene l'opzione predefinita sia il partizionamento per sito, il che risolve molti casi d'uso proprietari, l'esempio brandx.site mostra che una parte proprietaria può essere più grande di un solo sito.

Diagramma che mostra come la stessa istanza di un cookie per un insieme può essere inclusa in contesti tra siti quando tutti i siti fanno parte dello stesso insieme.

Una parte importante della proposta di insiemi proprietari è garantire che i criteri di tutti i browser impediscano comportamenti illeciti o usi impropri. Ad esempio, gli insiemi proprietari non devono attivare lo scambio di informazioni sugli utenti tra siti non correlati o il raggruppamento di siti che non sono di proprietà della stessa entità. L'idea è garantire che un insieme proprietario sia mappato a qualcosa che una persona comprende come proprietario e non viene utilizzato come un modo per condividere l'identità tra diverse parti.

Un modo possibile per un sito di registrare un set proprietario potrebbe essere quello di inviare il gruppo proposto di domini a un tracker pubblico (ad esempio un repository GitHub dedicato) insieme alle informazioni necessarie per soddisfare le norme del browser.

Una volta verificata l'asserzione del set proprietario in base al criterio, i browser possono recuperare gli elenchi di insiemi tramite una procedura di aggiornamento.

La prova dell'origine ha una norma definita che non è definitiva, ma è probabile che i principi rimangano gli stessi:

  • I domini in un insieme proprietario devono essere di proprietà e gestiti dalla stessa organizzazione.
  • I domini devono essere riconoscibili per gli utenti come gruppo.
  • I domini devono condividere norme sulla privacy comuni.

Come definire un insieme proprietario

Dopo aver identificato i membri e il proprietario del set proprietario della tua organizzazione, un passaggio fondamentale sarà inviare la proposta per l'approvazione. La procedura esatta è ancora in fase di discussione.

Per dichiarare un insieme proprietario, le risorse JSON statiche che elencano membri e proprietari devono essere ospitate su /.well-known/first-party-set nel livello principale di ogni dominio incluso.

Nell'esempio di brandx insieme proprietario, il dominio del proprietario ospita quanto segue in https://brandx.site/.well-known/first-party-set:

{
  "owner": "brandx.site",
  "version": 1,
  "members": ["fly-brandx.site", "drive-brandx.site"]
}

Ogni membro del set ospita anche una risorsa JSON statica che rimanda al proprietario del set. In https://fly-brandx.site/.well-known/first-party-set offriamo:

{ "owner": "brandx.site" }

E alle ore https://drive-brandx.site/.well-known/first-party-set:

{ "owner": "brandx.site" }

Esistono alcuni limiti per gli insiemi proprietari:

  • Un insieme può avere un solo proprietario.
  • Un membro può appartenere a un solo insieme, senza sovrapposizioni o combinazioni.
  • L'elenco dei membri deve essere relativamente leggibile e non troppo grande.

In che modo gli insiemi proprietari influiscono sui cookie?

L'ingrediente per i cookie è l'attributo SameParty proposto. Se specifichi SameParty, indichi al browser di includere il cookie quando il suo contesto fa parte dello stesso insieme proprietario del contesto di primo livello.

Ciò significa che se brandx.site imposta questo cookie:

Set-Cookie: session=123; Secure; SameSite=Lax; SameParty

Se il visitatore accede a fly-brandx.site e la richiesta viene inviata a brandx.site, il cookie session verrà incluso nella richiesta. Se un altro sito che non fa parte dell'insieme proprietario, ad esempio hotel.xyz, invia una richiesta a brandx.site, il cookie non viene incluso.

Diagramma che mostra il cookie brandx.site consentito o bloccato in contesti tra siti come descritto.

Finché SameParty non sarà ampiamente supportato, utilizza l'attributo SameSite insieme a questo per definire il comportamento di riserva per i cookie. L'attributo SameParty può essere considerato come un'impostazione compresa tra SameSite=Lax e SameSite=None.

  • SameSite=Lax; SameParty amplierà la funzionalità Lax in modo da includere contesti delle stesse parti, se supportati, ma in caso contrario rientra nell'ambito delle restrizioni Lax.
  • SameSite=None; SameParty limiterà la funzionalità None solo ai contesti della stessa parte, se supportati, ma, in caso contrario, utilizzerà le autorizzazioni None più ampie.

Esistono alcuni requisiti aggiuntivi:

  • I cookie SameParty devono includere Secure.
  • I cookie SameParty non devono includere SameSite=Strict.

Secure è obbligatorio perché è ancora cross-site e dovresti mitigare questi rischi garantendo connessioni sicure (HTTPS). Allo stesso modo, poiché si tratta di una relazione tra siti, SameSite=Strict non è valido in quanto consente ancora la massima protezione CSRF basata sul sito all'interno di un insieme.

Quali casi d'uso sono adatti agli insiemi proprietari?

Gli insiemi proprietari sono ideali per i casi in cui un'organizzazione ha bisogno di una forma di identità condivisa tra siti di primo livello diversi. In questo caso, l'identità condivisa significa qualsiasi soluzione, da una soluzione Single Sign-On completa alla semplice necessità di una preferenza condivisa tra più siti.

La tua organizzazione potrebbe avere domini di primo livello diversi per:

  • Domini app: office.com,live.com, microsoft.com
  • Domini con brand: amazon.com, audible.com / disney.com, pixar.com
  • Domini specifici del paese per abilitare la localizzazione: google.co.in, google.co.uk
  • Domini di servizio con cui gli utenti non interagiscono mai direttamente, ma che forniscono servizi sui siti della stessa organizzazione: gstatic.com, githubassets.com, fbcdn.net
  • Domini sandbox con cui gli utenti non interagiscono mai direttamente, ma che esistono per motivi di sicurezza: googleusercontent.com, githubusercontent.com

Come puoi partecipare?

Se hai un insieme di siti che corrisponde ai criteri precedenti, hai a disposizione varie opzioni per partecipare. L'investimento più semplice è leggere e partecipare alla discussione sulle due proposte:

Durante la fase di test, puoi provare la funzionalità utilizzando il flag della riga di comando --use-first-party-set e fornendo un elenco di siti separati da virgole.

Puoi provare questa funzionalità sul sito dimostrativo all'indirizzo https://fps-member1.glitch.me/ dopo aver avviato Chrome con il seguente flag:

--use-first-party-set=https://fps-member1.glitch.me,https://fps-member2.glitch.me,https://fps-member3.glitch.me

Ciò è utile se vuoi eseguire un test nel tuo ambiente di sviluppo o se vuoi provare ad aggiungere l'attributo SameParty in un ambiente dal vivo per vedere come un insieme proprietario potrebbe influire sui cookie.

Se hai a disposizione la larghezza di banda per la sperimentazione e il feedback, puoi anche registrarti al programma Prova dell'origine per insiemi proprietari e SameParty, disponibile in Chrome dalla versione 89 alla 93.

Come aggiornare i cookie per la prova dell'origine

Se stai partecipando alla prova dell'origine e testando l'attributo SameParty sui tuoi cookie, ecco due pattern da considerare.

Opzione 1

Innanzitutto, se hai cookie che hai etichettato come SameSite=None ma vuoi limitare i contesti proprietari, puoi aggiungere loro l'attributo SameParty. Nei browser in cui è attiva la prova dell'origine, il cookie non verrà inviato in contesti tra siti al di fuori del set.

Tuttavia, per la maggior parte dei browser che non rientrano nella prova dell'origine, il cookie continuerà a essere inviato tra siti come al solito. Si tratta di un approccio di miglioramento progressivo.

Prima: set-cookie: cname=cval; SameSite=None; Secure

Dopo: set-cookie: cname=cval; SameSite=None; Secure; SameParty

Opzione 2

La seconda opzione prevede un maggiore lavoro, ma consente di separare completamente la prova dell'origine dalla funzionalità esistente e consente in modo specifico di testare la combinazione SameSite=Lax; SameParty.

Prima: set-cookie: cname=cval; SameSite=None; Secure

Dopo:

set-cookie: cname=cval; SameSite=None; Secure
set-cookie: cname-fps=cval; SameSite=Lax; Secure; SameParty

Quando controlli il cookie nelle richieste in arrivo, dovresti aspettarti di vedere il cookie cname-fps in una richiesta cross-site solo se i siti coinvolti sono nel set e il browser si trova nella prova dell'origine. Considera questo approccio come il lancio simultaneo di una funzionalità aggiornata prima di ritirare la versione precedente.

Perché potresti non aver bisogno di un set proprietario?

Per la maggior parte dei siti, i confini del sito sono un luogo accettabile per tracciare la partizione o il confine della privacy. Questa è la route proposta con CHIPS (Cookie Having Independent Partitioned State) che offrirebbe ai siti una route di attivazione tramite l'attributo Partitioned per mantenere gli incorporamenti tra siti critici, le risorse, le API e i servizi, evitando la perdita di informazioni identificative tra i siti.

Ecco altri aspetti da considerare per capire che il tuo sito potrebbe funzionare senza bisogno di un set:

  • Esegui l'hosting su origini diverse, non su siti diversi. Nell'esempio precedente, se brandx.site ha fly.brandx.site e drive.brandx.site, si tratta di sottodomini diversi, tutti all'interno dello stesso sito. I cookie possono utilizzare SameSite=Lax e non è necessario impostarli.
  • Fornisci incorporamenti di terze parti su altri siti. Nell'introduzione, l'esempio di un video di video.site incorporato in my-blog.site è una chiara suddivisione di terze parti. I siti sono gestiti da organizzazioni diverse e gli utenti li vedono come entità separate. Questi due siti non devono essere nello stesso insieme.
  • Fornisci servizi di accesso tramite social di terze parti. I provider di identità che utilizzano funzionalità come OAuth o OpenID Connect spesso si basano sui cookie di terze parti per garantire un'esperienza di accesso più fluida per gli utenti. È un caso d'uso valido, ma non è adatto per gli insiemi proprietari perché c'è una chiara differenza tra le organizzazioni. Le prime proposte come WebID stanno esplorando il modo di abilitare questi casi d'uso.