Bug #45667
poser samesite=none sur les cookies de session
0%
Description
Chrome a commencé à considérer l'absence d'attribut samesite comme voulant dire samesite=lax, et plus samesite=none.
This feature will be rolled out gradually to Stable users starting July 14, 2020. See https://www.chromium.org/updates/same-site for full timeline and more details.
https://www.chromestatus.com/feature/5633521622188032
Dans la branche https://git.entrouvert.org/authentic.git/log?h=wip%2F42227-safari-samesite j'avais déjà fait le boulot (la branche a été automatiquement supprimée mais heureusement j'en avais une copie locale); le revoici, dans hobo, pour concerner tous les modules.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Fichier 0001-middleware-transform-cookies-to-have-SameSite-None-4.patch 0001-middleware-transform-cookies-to-have-SameSite-None-4.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Bien sûr ça ne le fait pas pour wcs qui n'a pas ses noms de cookies dans settings.etc. et il y faudra sans doute un patch (sinon a priori ça marcherait mais referait le SSO à chaque coup d'affichage du menu). (ce qu'on pourrait se dire ok en misant sur le menu construit depuis le combo agent).
Pour activer l'affaire dans chrome, ce serait chrome://flags et chercher/activer cookies-without-same-site-must-be-secure (mais ça ne change rien pour moi et je ne vais pas me battre).
Mis à jour par Frédéric Péters il y a plus de 3 ans
(pointé par Thomas, https://github.com/jotes/django-cookies-samesite qui fait davantage, notamment workaround de vieilles versions de chrome où poser samesite=none poserait problème mais on peut faire sans on parle de version 66 et je ne vais pas en chercher la date).
Mis à jour par Thomas Noël il y a plus de 3 ans
Pour pas qu'on soit ennuyés plus tard, je propose de s'imaginer déjà compatible Django 2.2 sur cette affaire...?
Pour l'import de MiddlewareMixin (inspiré de ce que j'ai vu dans https://github.com/jotes/django-cookies-samesite)
try: from django.utils.deprecation import MiddlewareMixin except ImportError: MiddlewareMixin = object
Et au niveau de debian/debian_config_common.py je ferais un ajout du middleware seulement pour Django avant 2.2 :
if PROJECT_NAME != 'wcs': if django.VERSION >= (2,2): MIDDLEWARE = ('hobo.middleware.RobotsTxtMiddleware',) + MIDDLEWARE else: MIDDLEWARE = ( 'hobo.middleware.RobotsTxtMiddleware', 'hobo.middleware.CookiesSameSiteFixMiddleware', ) + MIDDLEWARE
Mais, plus gênant, on a dans le code de hobo multitenant des modifications de settings.CSRF_COOKIE_NAME et settings.SESSION_COOKIE_NAME selon le tenant :
tenant_settings.CSRF_COOKIE_NAME = 'csrftoken-%s' % domain_hash
tenant_settings.SESSION_COOKIE_NAME = 'sessionid-%s' % domain_hash
Donc à mon avis il faut charger le hobo.middleware.CookiesSameSiteFixMiddleware après hobo.multitenant.middleware.TenantMiddleware
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Fichier 0001-middleware-transform-cookies-to-have-SameSite-None-4.patch 0001-middleware-transform-cookies-to-have-SameSite-None-4.patch ajouté
Pour l'import de MiddlewareMixin (inspiré de ce que j'ai vu dans https://github.com/jotes/django-cookies-samesite)
Oui mais on ne fait pas ça ailleurs et surtout MiddlewareMixin existe déjà toujours même dans les derniers django, je dirais même avoir lu que ça sortirait des bouts deprecated mais je ne retrouve pas cette info.
Et au niveau de debian/debian_config_common.py je ferais un ajout du middleware seulement pour Django avant 2.2 :
Pas tout à fait sûr de django 2.2 en fait, dans django-cookies-samesite ils parlent de version 3 pour que ça soit géré correctement.
Donc à mon avis il faut charger le hobo.middleware.CookiesSameSiteFixMiddleware après hobo.multitenant.middleware.TenantMiddleware
Yep, je l'avais ainsi en local sans passer par debian/debian_config_common.py. (à noter que je l'ajoute aussi encore pour les applications utilisant MIDDLEWARE_CLASSES, chose qui devrait disparaitre).
Mis à jour par Thomas Noël il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 8b40112c35e913d82a3bdc827533fe4005f9e4b6 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Jul 31 16:34:58 2020 +0200 middleware: transform cookies to have SameSite=None (#45667)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Frédéric Péters il y a 10 mois
- Lié à Development #79711: supprimer hobo.middleware.CookiesSameSiteFixMiddleware ajouté
middleware: transform cookies to have SameSite=None (#45667)