Projet

Général

Profil

Bug #45667

poser samesite=none sur les cookies de session

Ajouté par Frédéric Péters il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
31 juillet 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Hobo - Development #79711: supprimer hobo.middleware.CookiesSameSiteFixMiddlewareFermé15 juillet 2023

Actions

Révisions associées

Révision 8b40112c (diff)
Ajouté par Frédéric Péters il y a plus de 3 ans

middleware: transform cookies to have SameSite=None (#45667)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 3 ans

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).

#2

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).

#3

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

#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

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).

#5

Mis à jour par Thomas Noël il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée
#6

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)
#7

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
#8

Mis à jour par Frédéric Péters il y a 10 mois

  • Lié à Development #79711: supprimer hobo.middleware.CookiesSameSiteFixMiddleware ajouté

Formats disponibles : Atom PDF