Cooke : SameSite=None ne fonctionne pas à cause d'une version obsolète de Rack

Bonjour,

Le support de la valeur sameSite « None » a été ajouté (par mes soins) il y a quelques semaines. Vous pouvez désormais sélectionner « None » dans les paramètres des cookies. Cependant, après avoir modifié et enregistré ce paramètre, vous ne pouvez plus vous connecter. La requête session/CSRF renvoie une erreur 500.

J’ai traqué cette erreur et les journaux indiquent :
Failed to handle exception in exception app middleware : Invalid SameSite value: "None"
à l’adresse :
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/utils.rb:260:in add_cookie_to_header’`

J’ai découvert que notre version actuelle de Rack (2.0.8) ne prend pas en charge la valeur sameSite « None » comme paramètre. Cette fonctionnalité est prise en charge par la version la plus récente de Rack.

Cependant, le fichier Gemfile du projet contient un commentaire indiquant que la mise à niveau de Rack pourrait provoquer des dysfonctionnements :

Par conséquent, je préférerais que quelqu’un d’autre effectue cette mise à niveau, car cette personne aurait une connaissance plus approfondie du projet que la mienne.

Je considère cela comme critique, car si vous modifiez les paramètres des cookies en « None », personne ne peut plus se connecter et la seule solution consiste à intervenir directement sur la base de données.

Quelqu’un pourrait-il s’il vous plaît corriger ce problème ou m’aider ? Je ne suis pas très expert en Ruby.

1 « J'aime »

Salut @dave0688 - merci d’avoir soulevé ce point. Je viens de supprimer l’option samesite=none afin d’éviter de provoquer une erreur serveur.

La mise à jour de rack est dans notre ligne de mire, mais cela sera assez complexe. Je n’ai pas de délai exact.

Une fois la mise à jour effectuée, nous serons ravis de réactiver le paramètre de site SameSite=none.

6 « J'aime »

@dave0688 Pour info, nous avons désormais mis à niveau rack, j’ai donc réappliqué votre commit

4 « J'aime »