Von nicht partitionierten auf partitionierte Cookies umstellen

Wenn Sie auf Ihrer Website auf partitionierte Cookies umstellen, kann es zu unerwartetem Verhalten kommen, wenn für einen bestimmten Client sowohl ein partitioniertes als auch ein nicht partitioniertes Cookie mit denselben Namen vorhanden ist.

Durch das Festlegen eines partitionierten Cookies wird ein vorhandenes nicht partitioniertes Cookie mit demselben Namen nicht überschrieben oder ersetzt. Beide sind weiterhin vorhanden, solange Drittanbieter-Cookies aktiviert sind, jedoch in separaten Cookie-JAR-Dateien. Wenn Drittanbieter-Cookies deaktiviert sind, wird nur die partitionierte Version akzeptiert. Wenn beide Cookies vorhanden sind, kann programmatisch nicht ermittelt werden, welches davon partitioniert ist und welches nicht. Dies kann zu unerwartetem Verhalten führen.

Es gibt zwei Möglichkeiten, dieses Problem anzugehen: 1. Das zu ersetzende Cookie läuft ab. 2. Cookies umbenennen

Wichtige Überlegungen

Beachten Sie bei der Umstellung auf partitionierte Cookies Folgendes:

  1. Es gibt keine Möglichkeit, programmatisch zu bestimmen, ob ein in einer HTTP-Anfrage gesendetes Cookie partitioniert oder nicht partitioniert ist. Sie können den partitionierten Status eines Cookies jedoch in den Chrome-Entwicklertools ermitteln. Mithilfe der CookieStore API können Sie zwischen partitionierten und nicht partitionierten Cookies ohne HttpOnly-Attribut unterscheiden.
  2. Partitionierte Cookies überschreiben keine nicht partitionierten Cookies. Zwei genau identische Cookies, d. h. dieselben Attribute wie Name, Domain oder Pfad, werden als separate Cookies behandelt, wenn nur eines das Attribut Partitioned hat.
  3. Es ist am besten, eine Situation zu vermeiden, in der sowohl ein partitioniertes als auch ein nicht partitioniertes Cookie mit demselben Namen im selben Netzwerkaufruf zurückgegeben werden.

Zu ersetzende Cookies ablaufen lassen

Wenn Ihre Website oder Ihr Dienst keine Namensänderung zulässt, können Sie ein neues partitioniertes Cookie erstellen und das vorhandene nicht partitionierte Cookie ablaufen lassen. Es gibt zwar keine Möglichkeit, festzustellen, ob ein Cookie partitioniert ist, aber Set-Cookie-Header mit einem Partitioned-Attribut wirken sich nicht auf nicht partitionierte Cookies aus.

Das folgende Beispiel zeigt, wie das nicht partitionierte Cookie mit dem Namen example abläuft und alle partitionierten Cookies nicht betroffen sind, auch wenn sie denselben Namen haben. Ein neues partitioniertes Cookie namens cookieName wird hinzugefügt oder aktualisiert, wenn es bereits vorhanden ist.

Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

Cookies umbenennen

Die zuverlässigste Methode, um eine nahtlose Umstellung zu ermöglichen, besteht darin, unterschiedliche Namen für Ihre partitionierten und nicht partitionierten Cookies zu verwenden. Wenn Sie beispielsweise ein nicht partitioniertes Cookie mit dem Namen „beispiel“ haben, können Sie es zu einem partitionierten Cookie migrieren.

Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

Da der Ablauf des Cookies nicht programmatisch offengelegt wird, gibt es keine Möglichkeit, die Ablaufzeit des neuen Cookies so einzustellen, dass sie mit dem Ablauf des nicht partitionierten Cookies übereinstimmt. Es kann pragmatisch sein, den Wert des Cookies während dieses Vorgangs zu aktualisieren.

Partitionierte und nicht partitionierte Cookies verwalten

Während der Übergangsphase sollten Sie zwei separate synchronisierte Cookies beibehalten: eines, das partitioniert ist, und eines, das nicht partitioniert ist. Angenommen, Sie haben sowohl das auth- als auch das auth-partitioned-Cookie, wobei Letzteres mit dem Attribut Partitioned festgelegt wurde.

Sie sollten versuchen, beide Cookies jedes Mal zu setzen, wenn der Wert aktualisiert wird.

  • Bei Clients, die Drittanbieter-Cookies blockieren, CHIPS aber noch nicht unterstützen, wird keines der Cookies akzeptiert.
  • Bei Clients, die Drittanbieter-Cookies blockieren und CHIPS unterstützen, wird das Cookie auth abgelehnt, aber das Cookie auth-partitioned wird akzeptiert.
  • Auf Clients, die Drittanbieter-Cookies nicht blockieren, unabhängig davon, ob sie CHIPS unterstützen: Sowohl auth als auch auth-partitioned werden akzeptiert.

Wenn Ihre Anwendung das Authentifizierungs-Cookie lesen muss, sollten Sie zuerst nach auth-partitioned suchen. Wenn Sie die Änderung jedoch vorübergehend rückgängig machen müssen, können Sie stattdessen nach dem auth-Cookie suchen.

Sobald Sie festgestellt haben, dass die Cookies der meisten Nutzer aktualisiert wurden, kann das auth-partitioned-Cookie eingestellt und das Attribut „Partitioned“ dem regulären Authentifizierungs-Cookie hinzugefügt werden.