Nouvelle valeur allow-same-site-none-cookies de la sandbox à partir de Chrome 135

Natalia Markoborodova
Natalia Markoborodova

À partir de Chrome 135, vous pouvez utiliser la nouvelle valeur sandbox : allow-same-site-none-cookies. Lorsque cette règle est spécifiée et que les cookies tiers ne sont pas disponibles, le navigateur n'envoie que des cookies SameSite=None dans les requêtes HTTP provenant d'iframes propriétaires en bac à sable.

Qu'est-ce qu'un iFrame en bac à sable ?

Les iframes isolées dans un bac à sable sont des iframes soumises à des restrictions spéciales. Ils sont traités comme ayant une origine null, opaque. Par défaut, les fonctionnalités potentiellement dangereuses telles que les scripts, les formulaires et les pop-ups ne sont pas disponibles dans les iFrames en bac à sable.

Utilisez l'attribut sandbox pour spécifier les fonctionnalités qu'un iframe en bac à sable doit avoir disponibles. Exemple :

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

Le bac à sable est toujours une bonne idée, car il vous permet de sélectionner de manière précise les autorisations requises pour que le contenu intégré se charge correctement, tout en limitant la portée des exploits potentiels.

Pourquoi avons-nous besoin de cette nouvelle règle ?

Avant l'introduction de allow-same-site-none-cookies, vous pouviez configurer deux scénarios de cookies dans une iFrame en bac à sable:

  • Sans le jeton allow-same-origin dans l'attribut sandbox, l'origine de l'iFrame est sérialisée en tant que null, ce qui rend toutes les requêtes de la page en bac à sable intersites. Dans ce cas, seuls les cookies avec SameSite=None seront inclus dans les requêtes.
  • Avec le jeton allow-same-origin dans l'attribut sandbox, les requêtes sont traitées comme provenant de l'origine réelle de l'iFrame, ce qui permet d'envoyer des cookies avec n'importe quelle valeur SameSite.

Lorsque les cookies tiers sont bloqués, une iframe dans un bac à sable sans allow-same-origin ne peut pas envoyer de cookies, sauf si vous activez allow-same-site-none-cookies.

Un iFrame avec allow-same-origin peut toujours inclure des cookies dans les requêtes du même site, même lorsque les cookies tiers sont bloqués. Toutefois, le pot à cookies de l'ensemble de l'origine serait exposé à une activité Web potentiellement malveillante.

Avec allow-same-site-none-cookies, une iFrame peut envoyer des cookies SameSite=None dans les requêtes HTTP, tandis que les cookies SameSite=Strict et SameSite=Lax potentiellement sensibles ne sont pas inclus.

Exemple pratique

Prenons l'exemple d'un site, practice-coding.example, qui permet aux utilisateurs de créer et d'exécuter des projets de codage personnalisés et d'intégrer le code d'autres utilisateurs. Pour utiliser le service, les utilisateurs doivent se connecter, ce qui entraîne la définition d'un cookie de session SameSite=Strict.

Un autre utilisateur crée un projet, practice-coding.example/cookie-theft, que d'autres utilisateurs peuvent intégrer à leurs projets en tant qu'iframe à leur insu. Si les cookies SameSite=Strict et SameSite=Lax sont exposés à l'iframe practice-coding.example/cookie-theft, l'utilisateur malveillant peut voler les cookies de session d'autres utilisateurs.

Dans ce scénario, le propriétaire du site peut souhaiter limiter l'accès aux cookies potentiellement sensibles. Toutefois, il peut toujours souhaiter autoriser les cookies SameSite=None dans les iFrames en bac à sable. Par exemple, une iFrame dans un bac à sable practice-coding.example/coding-interview peut nécessiter des cookies SameSite=None pour permettre aux candidats de revoir leur code. allow-same-site-none-cookies empêche l'exposition de l'ensemble du pot de cookies tout en autorisant de manière sélective les cookies SameSite=None nécessaires.

Comment n'autoriser que SameSite=None dans les cadres en bac à sable propriétaires ?

Pour activer les cookies SameSite=None dans les requêtes provenant de pages propriétaires dans un bac à sable, spécifiez le jeton allow-same-site-none-cookies dans la balise iFrame. Exemple :

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

Vous pouvez également définir une règle allow-same-site-none-cookies avec un en-tête HTTP Content-Security-Policy:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

Essayez-le vous-même avec notre démo.

Interagir et envoyer des commentaires

Envoyez une demande pour partager vos commentaires ou signaler des problèmes, ou participez à la discussion sur GitHub.