SameSite = Lax par défaut - déjà dans Chrome 80 stable (mais pas encore pour tout le monde)

L'autre jour, une collègue attentive (merci, Lena) a signalé un bug étrange - le serveur a normalement installé un cookie dans le navigateur, mais il n'est pas revenu. Tout a fonctionné la veille, mais maintenant le cookie a été défini, mais après quelques secondes, il a disparu comme par magie (bien qu'il devrait durer 24 heures). Il n'a été reproduit que par quelques personnes dans l'équipe et uniquement dans le nouveau Chrome 80, mais le reste dans Chrome avait exactement la même version, tout était en ordre. Dans d'autres navigateurs, tout fonctionnait comme une horloge. Mystique. Ils ont commencé à le comprendre, et après un certain temps, la console Chrome a remarqué un avertissement pour l'en-tête de réponse définissant le cookie:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

Ils ont commencé à étudier ce que c'était, et progressivement, il est devenu clair comment l'erreur est survenue et pourquoi tout le monde ne l'a pas montrée. Étant donné que notre service doit traiter les demandes de différents domaines, ce SameSiten'est que notre cas. Ils ont ajouté SameSite=None; Secure, et le problème a été résolu pour nous.

Pourquoi donc?


Initialement, selon la norme HTTP, le navigateur a envoyé des cookies (ou simplement des cookies) pour toute demande au domaine correspondant. Cela a ouvert des opportunités pour une attaque CSRF, c'est-à-dire, a permis à des personnes sans scrupules, dans un certain ensemble de circonstances, d'accéder à certaines ressources sous prétexte de bonne foi sans méfiance, simplement en utilisant leurs cookies.

En 2016, un attribut a été introduit SameSitequi vous permet de contrôler si le navigateur enverra des cookies si la page envoie une demande à un autre domaine. Les développeurs ont la possibilité de bloquer le transfert de leurs cookies, si la demande est exécutée depuis un site tiers. Pour cela, l'attribut SameSitedevait être explicitement défini sur Strict.(les cookies sont transmis uniquement sur les demandes et les transitions du domaine auquel ils appartiennent), ou Lax (les cookies sont transmis lors de la transition vers le site à partir d'autres sites par un lien direct, mais ne sont pas transmis sur d'autres demandes de leur part, par exemple, lorsqu'une demande AJAX ou le téléchargement d'images) ) L'absence SameSiteétait équivalente SameSite=None, c'est-à-dire que par défaut, les cookies étaient toujours transmis sur toute demande.

En mai 2019, les développeurs de Google Chrome ont annoncé qu'ils modifieraient progressivement ce comportement et interpréteraient l'absence de SameSite comme SameSite=Lax(plus ici) C'est-à-dire - par défaut, le navigateur bloquera la transmission des cookies pour les demandes de la page en cours à toute autre ressource, à l'exception des clics directs sur le lien. Les développeurs de Firefox et Edge ont annoncé qu'au fil du temps, ils mettront également en œuvre ce changement dans leurs navigateurs.

Pour les utilisateurs, ce comportement du navigateur est plus sécurisé. Les développeurs de sites et de services Web doivent garder à l'esprit que s'ils ont toujours besoin de recevoir leurs cookies lorsqu'ils demandent à partir d'autres sites, ils devront définir explicitement leurs attributs de cookies SameSite=None, Secure( Secure- car une telle demande, en outre, ne devrait parvenir au serveur que via un canal sécurisé). )

Étant donné que l'innovation modifie la norme actuelle et que tous les sites ne pourront pas s'adapter rapidement, la transition vers un nouveau comportement se fait progressivement. Initialement, il était activé pour un nombre limité d'utilisateurs de la version bêta de Chrome, et maintenant leur nombre augmente progressivement. Les informations réelles sont disponibles ici . La dernière entrée sur le lien:
Dernière mise à jour le 9 mars 2020.

Nous avons commencé à appliquer le nouveau comportement pour Chrome 80 stable, mais pas pour 100% des utilisateurs. Le déploiement contrôlé concerne une population initiale limitée,
Autrement dit, la période de test bêta est en retard, et les développeurs Chrome ont commencé à inclure lentement de nouvelles fonctionnalités parmi les utilisateurs ordinaires. Ce qui est bon en principe, car c'est vraiment plus sûr.

Vous pouvez restaurer l'ancien comportement via les paramètres : dans la barre d'adresse de Chrome, entrez chrome://flags, accédez à la page, recherchez l' élément SameSite être les cookies par défaut et réglez-le sur Désactivé . Mais cela convient mieux aux tests qu'aux utilisateurs ordinaires. De même, si votre Chrome 80 exécute toujours l'ancien comportement, vous pouvez forcer la nouvelle fonctionnalité en définissant le même paramètre sur Activé .

Par conséquent, si votre site doit recevoir des cookies lors de la demande de différents domaines - soyez prêt pour les changements à venir (et celui qui est prêt est bon pour cela). Bon à tous!

Ajouté par:
xdensera indiqué dans les commentaires que certaines anciennes versions de navigateurs ne prennent pas en charge SameSite=None, n'acceptent pas ces cookies du tout ou les traitent de manière non standard. Parmi eux, des navigateurs pour ordinateurs de bureau et appareils mobiles. La page https://www.chromium.org/updates/same-site/incompatible-clients fournit une liste de navigateurs et une solution possible au problème (en pseudo-code, mais assez détaillé). Les auteurs suggèrent de détecter les versions problématiques des navigateurs par titre useragentet de ne pas définir du tout leur attribut de cookies SameSite=None.

Ajouté 2:
Dans le cadre de la situation avec COVID-19, à partir du 3 avril 2020, Google suspend temporairement la mise en œuvre des modifications décrites dans le traitement de SameSite, afin d'assurer le bon fonctionnement des services Internet. Sur les appareils sur lesquels des modifications sont déjà appliquées, elles seront annulées.
(c) blog.chromium.org/2020/04/temporarily-rolling-back-samesite.html

Sources:
web.dev/samesite-cookies-explained
www.chromium.org/updates/same-site
www.chromestatus.com/ feature / 5088147346030592
www.chromium.org/updates/same-site/incompatible-clients
blog.chromium.org/2020/04/temporially-rolling-back-samesite.html

All Articles