À 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'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 intersites. Dans ce cas, seuls les cookies avecSameSite=None
seront inclus dans les requêtes. - Avec le jeton
allow-same-origin
dans l'attributsandbox
, 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 valeurSameSite
.
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.