70 votes

Quelle est la différence entre SameSite="Lax" et SameSite="Strict" ?

Quelqu'un peut-il me dire quelle est la différence entre SameSite="Lax" y SameSite="Strict" par un bel exemple car je suis un peu perdu entre ces deux-là ?

117voto

chlily Points 1209

Lax autorise l'envoi du cookie sur certaines requêtes intersites, tandis que Strict ne permet jamais l'envoi du cookie sur une requête intersite.

Les situations dans lesquelles les cookies Lax peuvent être envoyés à travers le site doivent satisfaire aux deux conditions suivantes :

  1. La demande doit être une navigation de haut niveau. On peut considérer que cela équivaut à un changement de l'URL affiché dans la barre d'URL, par exemple lorsqu'un utilisateur clique sur un lien pour aller sur un autre site.
  2. La méthode de demande doit être sûre (par exemple, GET ou HEAD, mais pas POST).

Par exemple :

  1. Disons qu'un utilisateur se trouve sur le site-a.com et clique sur un lien pour aller sur le site-b.com. Il s'agit d'une demande intersite. Il s'agit d'une navigation de haut niveau et d'une demande GET, les cookies Lax sont donc envoyés au site-b.com. Toutefois, les cookies Strict ne sont pas envoyés car il s'agit, après tout, d'une demande intersite.
  2. L'utilisateur est sur le site-a.com et il y a une iframe dans laquelle le site-b.com est chargé. Il s'agit d'une requête intersite, mais pas d'une navigation de haut niveau (l'utilisateur est toujours sur le site-a.com, c'est-à-dire que la barre d'URL ne change pas lorsque l'iframe est chargée). Par conséquent, ni les cookies Lax ni les cookies Strict ne sont envoyés au site-b.com.
  3. L'utilisateur se trouve sur le site-a.com qui envoie un formulaire au site-b.com par POST. Il s'agit d'une requête intersite, mais la méthode (POST) n'est pas sûre. Elle ne remplit pas les critères pour que des cookies Lax soient envoyés sur un autre site, donc aucun cookie Lax ou Strict n'est envoyé au site-b.com.

4 votes

Existe-t-il une raison de sécurité (ou autre) pour laquelle quelqu'un voudrait utiliser SameSite="Strict" ?

2 votes

@joshhunt Le CSRF basé sur le GET est beaucoup moins courant qu'il ne l'était autrefois, mais il se produit encore. Ainsi, si un site n'a pas besoin de cookies Lax pour fonctionner (il n'a aucune raison de faire fonctionner des liens externes vers des pages, si ces pages ne peuvent être vues que par des utilisateurs dont les cookies sont configurés), il peut choisir de réduire sa surface d'attaque potentielle en rendant les cookies SameSite=Strict.

0 votes

Merci pour l'explication concernant la "navigation de haut niveau".

27voto

Son Xuan Nguyen Points 312

Une image vaut mille mots. Voici mon diagramme lucide qui résume tout ce que vous devez savoir sur l'attribut SameSite :

enter image description here

Notez que "les cookies avec SameSite=None doivent désormais également spécifier l'attribut Secure (ils nécessitent un contexte sécurisé/HTTPS)" Source : MDN

Source : à partir de la réponse de @chlily ci-dessus et de la blog de Google sur les cookies SameSite

Bonus : différence entre same-site et same-origin du blog de Google

0 votes

La réponse devrait être acceptée ! Merci pour le diagramme !

11voto

Anil Samelia Points 59

Strict ne permet pas d'envoyer le cookie sur une demande intersite ou une iframe. LAX permet uniquement le GET Aucun accepte toutes les demandes, mais sécurisé est nécessaire ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X