"Same-site" e "same-origin"

"Stessa proprietà" e "stessa origine" sono termini spesso citati, ma spesso fraintesi. Ad esempio, vengono utilizzati nel contesto delle transizioni di pagina, delle richiestefetch(), dei cookie, dell'apertura di popup, delle risorse incorporate e degli iframe. Questa pagina spiega cosa sono e come si differenziano tra loro.

Origine

Origine
La struttura di un'origine.

"Origine" è una combinazione di un schema (noto anche come protocollo, ad es. HTTP o HTTPS), un nome host e una porta (se specificata). Ad esempio, dato un URL https://www.example.com:443/foo, la "origine" è https://www.example.com:443.

"Origine stessa" e "Origine diversa"

I siti web che hanno la stessa combinazione di schema, nome host e porta sono considerati "della stessa origine". Tutto il resto è considerato "cross-origin".

Origine A Origine B "Origine stessa" o "Origine diversa"?
https://www.example.com:443 https://www.evil.com:443 Origine diversa: domini diversi
https://example.com:443 Origine diversa: sottodomini diversi
https://login.example.com:443 Origine diversa: sottodomini diversi
http://www.example.com:443 Cross-origin: schemi diversi
https://www.example.com:80 Origine diversa: porte diverse
https://www.example.com:443 Origine stessa: corrispondenza esatta
https://www.example.com Origine stessa: corrispondenze del numero di porta implicito (443)

Sito

Sito (TLD+1)
Le parti di un URL che costituiscono un sito.

I domini di primo livello (TLD) come .com e .org sono elencati nel database della zona principale. Nell'esempio
precedente, "site" è una combinazione dello schema, del TLD e della parte del dominio immediatamente precedente (chiamato TLD+1). Ad esempio, dato un URL dihttps://www.example.com:443/foo, "sito" è https://example.com.

Elenco dei suffissi pubblici ed eTLD

Per i domini con elementi come .co.jp o .github.io, l'utilizzo di .jp o .io non è sufficientemente specifico per identificare il "sito". Non è possibile determinare in modo algoritmico il livello di domini registrabili per un determinato TLD. Per aiutarti, l'elenco dei suffissi pubblici definisce un elenco di suffissi pubblici, chiamati anche domini di primo livello effettivi (eTLD). L'elenco degli eTLD è disponibile all'indirizzo publicsuffix.org/list.

Per identificare la parte "sito" di un dominio che include un dominio di primo livello generico, applica la stessa procedura dell'esempio con .com. Prendendo come esempio https://www.project.github.io:443/foo, lo schema è https, il dominio di primo livello effettivo è .github.io e l'eTLD+1 è project.github.io, quindi https://project.github.io è considerato il "sito" per questo URL.

Sito (eTLD+1)
Le parti di un URL con un dominio di primo livello generico.

"stessa proprietà" e "tra proprietà"

I siti web che hanno lo stesso schema e lo stesso dominio eTLD+1 sono considerati "stessa proprietà". I siti web che hanno uno schema o un eTLD+1 diverso sono "cross-site".

Origine A Origine B "Stessa proprietà" o "Tra siti"?
https://www.example.com:443 https://www.evil.com:443 Intersiti: domini diversi
https://login.example.com:443 Stessa proprietà: i sottodomini diversi non contano
http://www.example.com:443 Cross-site: schemi diversi
https://www.example.com:80 Stessa proprietà: le porte diverse non contano
https://www.example.com:443 Stessa proprietà: corrispondenza esatta
https://www.example.com Stessa origine: le porte non contano

"Stessa proprietà senza schema"

Same-Site senza schema

La definizione di "stessa proprietà" è cambiata per includere lo schema URL come parte del sito al fine di impedire l'utilizzo di HTTP come canale debole. Il vecchio concetto di "stessa proprietà" senza confronto dello schema ora si chiama "stessa proprietà senza schema". Ad esempio, http://www.example.com e https://www.example.com sono considerati siti dello stesso proprietario senza schema, ma non siti dello stesso proprietario, perché conta solo la parte eTLD+1 e lo schema non viene preso in considerazione.

Origine A Origine B "Senza schema nello stesso sito" o "tra siti"?
https://www.example.com:443 https://www.evil.com:443 Intersiti: domini diversi
https://login.example.com:443 Stessa proprietà senza schema: i sottodomini diversi non contano
http://www.example.com:443 Same-site senza schema: gli schemi diversi non contano
https://www.example.com:80 Senza schema nello stesso sito: le porte diverse non contano
https://www.example.com:443 Senza schema nello stesso sito: corrispondenza esatta
https://www.example.com Same-site senza schema: le porte non contano

Come verificare se una richiesta è "stessa origine", "stessa origine" o "tra siti"

Browser Support

  • Chrome: 76.
  • Edge: 79.
  • Firefox: 90.
  • Safari: 16.4.

Source

Tutti i browser moderni inviano richieste con un'intestazione HTTP Sec-Fetch-Site. L'intestazione ha uno dei seguenti valori:

  • cross-site
  • same-site (si riferisce a schemeful same-site)
  • same-origin
  • none

Puoi esaminare il valore di Sec-Fetch-Site per determinare se la richiesta appartiene allo stesso sito, alla stessa origine o a siti diversi.

Puoi ragionevolmente fare affidamento sul valore dell'intestazione Sec-Fetch-Site, perché: