À 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 les 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 en bac à sable sont des iframes avec 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 disponibles dans un iFrame en bac à sable. Exemple :
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Le sandboxing 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 éventuels exploits.
Pourquoi avons-nous besoin de ces nouvelles règles ?
Avant l'introduction de allow-same-site-none-cookies, vous pouviez configurer deux scénarios de cookies dans un iFrame en bac à sable :
- Sans le jeton
allow-same-origindans l'attributsandbox, l'origine de l'iFrame est sérialisée en tant quenull, ce qui rend toutes les requêtes de la page en bac à sable multisites. Dans ce cas, seuls les cookies avecSameSite=Noneseront inclus dans les requêtes. - Avec le jeton
allow-same-origindans l'attributsandbox, les requêtes sont traitées comme provenant de la véritable origine de l'iFrame, ce qui permet d'envoyer des cookies avec n'importe quelle valeurSameSite.
Lorsque les cookies tiers sont bloqués, un iFrame en bac à sable sans allow-same-origin
ne peut envoyer aucun cookie, sauf si vous activez allow-same-site-none-cookies.
Un iFrame avec allow-same-origin pourra toujours inclure des cookies dans les requêtes sur le même site, même lorsque les cookies tiers sont bloqués. Toutefois, le cookie jar de l'origine entière 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 seront 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 sans le savoir en tant qu'iframe dans leurs projets. 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 restreindre l'accès aux cookies potentiellement sensibles. Toutefois, ils peuvent toujours souhaiter autoriser les cookies SameSite=None dans les cadres iFrame en bac à sable. Par exemple, une iframe sandboxée practice-coding.example/coding-interview peut nécessiter des cookies SameSite=None pour permettre aux candidats de revenir sur leur code.
allow-same-site-none-cookies empêche l'exposition de l'ensemble du cookie jar tout en autorisant sélectivement les cookies SameSite=None nécessaires.
Comment autoriser uniquement SameSite=None dans les frames en bac à sable propriétaires ?
Pour activer les cookies SameSite=None dans les requêtes provenant de pages propriétaires en 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émonstration.
Interagir et envoyer des commentaires
Ouvrez une demande pour partager vos commentaires ou signaler des problèmes, ou rejoignez la discussion sur GitHub.