Safari n'envoie pas de cookie même après avoir défini SameSite = None; Sécurise

13

Notre application utilise des cookies pour mémoriser la connexion de l'utilisateur. Chaque appel d'API d'authentification que nous faisons, le navigateur attache un cookie HTTPonly défini par le serveur à la demande d'API et est authentifié. Ce comportement semble être rompu lors d'un safari après la sortie de Mojave.

J'ai lu sur la sécurité des cookies intersites mise en œuvre par safari et notre équipe de serveurs a été ajoutée SameSite=None;Securelors de la configuration du cookie. Même après cela, cela ne fonctionne toujours pas.

Set-Cookie: my_cookie=XXXXX; path=/; secure; HttpOnly; SameSite=None

Veuillez conseiller ou fournir des liens de personnes ayant réellement trouvé une solution.

DieOnTime
la source

Réponses:

15

Les versions de Safari sur MacOS 10.14 et tous les navigateurs sur iOS 12 sont affectés par ce bogue, ce qui signifie qu'il SameSite=Noneest traité à tort comme SameSite=Strict, par exemple, le paramètre le plus restrictif.

J'ai publié des conseils dans les recettes de cookies SameSite sur:

  • Utilisation de deux ensembles de cookies pour tenir compte des navigateurs qui prennent en charge SameSite=None; Secureet ceux qui ne le font pas.
  • Renifler l'agent utilisateur pour les navigateurs incompatibles et ne pas servir SameSite=Nonepour ces demandes.
rowan_m
la source
1
Bonjour Rowan, Merci pour la réponse et excuses pour la réponse tardive. J'ai demandé à mon équipe côté serveur d'essayer les instructions du lien web.dev ci-dessus. Peut-être que c'est une question complètement inappropriée à poser, de toute façon ici. Étant donné que des millions d'utilisateurs sont affectés par le changement, des nouvelles s'il y a un plan à l'avenir de la part de l'équipe Apple pour le résoudre?
DieOnTime
Je ne peux pas parler pour l'équipe Apple / Safari. Je pense que le bug d'origine est le meilleur endroit pour ces discussions.
rowan_m
0

Pour les applications codées en Ruby (en particulier, Rails, Sinatra ou quoi que ce soit sur Rack), la gemme RailsSameSiteCookie résout très bien ce problème et les problèmes connexes. Le code se lit comme une traduction proche du pseudocode dans la discussion Chromium sans les regex fragiles.

Av Pinzur
la source