Projet

Général

Profil

Bug #5598

Mieux tester les cookies

Ajouté par Jérôme Schneider il y a plus de 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jérôme Schneider
Catégorie:
-
Version cible:
-
Début:
29 septembre 2014
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Stacktrace (appel le plus récent en dernier) : 

  File "mandaye/server.py", line 137, in __call__
    response = self.on_request(start_response)
  File "mandaye/server.py", line 205, in on_request
    response = self.dispatcher.get_response(request)
  File "mandaye/dispatcher.py", line 150, in get_response
    response = self._call_hook(hook, request, None)
  File "mandaye/dispatcher.py", line 113, in _call_hook
    return hook['filter'](self.env, values, *args)
  File "mandaye/auth/saml2.py", line 173, in sso
    env['beaker.session'].regenerate_id()
  File "beaker/session.py", line 651, in __getattr__
    return getattr(self._session(), attr)
  File "beaker/session.py", line 647, in _session
    **params)
  File "beaker/session.py", line 149, in __init__
    self.cookie = Cookie.SimpleCookie(input=cookieheader)
  File "python2.7/Cookie.py", line 579, in __init__
    if input: self.load(input)
  File "python2.7/Cookie.py", line 632, in load
    self.__ParseString(rawdata)
  File "python2.7/Cookie.py", line 665, in __ParseString
    self.__set(K, rval, cval)
  File "python2.7/Cookie.py", line 585, in __set
    M.set(key, real_value, coded_value)
  File "python2.7/Cookie.py", line 460, in set
    raise CookieError("Illegal key value: %s" % key)

https://sentry.entrouvert.org/meyzieu/mandaye-meyzieu-prod/group/753/

J'ai déjà poussé le patch mais on me demande d'ouvrir un ticket dessus. C'est chose faite.


Fichiers

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

Ça aurait mérité un commentaire dans le code pour expliquer ce qui se passe, mais sinon à mon avis la bonne façon de faire serait de nettoyer le contenu de HTTP_COOKIE plus généralement en entrée de mandaye, peut-être que quelque chose de simple comme cela dans un filtre WSGI suffirait:

    cookies = env['HTTP_COOKIE'].split(';')
    ok_cookies = []
    for cookie in cookies:
        try:
            Cookie.SimpleCookie(input=cookie)
        except Cookie.CookieError:
            pass
        else:
            ok_cookies.append(cookie)
    env['HTTP_COOKIE'] = ';'.join(ok_cookies)

On pourrait ainsi en finir avec ces histoires de cookie de façon plus globale, non ?

#2

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

Si !

#3

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Fichier 0001-server-remove-cookies-with-bad-key.patch ajouté
  • Fichier 0002-cleaning-now-useless-tests-for-valid-cookies.patch ajouté
  • Sujet changé de CookieError: Illegal key value: ctx:1420m06d05 à Mieux tester les cookies

Une proposition de deux patchs qui applique l'idée de Benj. Je renomme le ticket histoire que ça soit plus clair.

#4

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Fichier 0001-server-remove-cookies-with-bad-key.patch supprimé
#5

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Fichier 0002-cleaning-now-useless-tests-for-valid-cookies.patch supprimé
#7

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

Le deuxième patch ne sert car on peut toujours recevoir un cookie pourri dans un Set-Cookie. Quand à ce bout de code:

if self.cookies.has_key(cookie.key):
     del self.cookies[cookie.key]

Je ne suis toujours pas certain qu'il soit utile, en fait il faudrait écrire ici à quoi sert self.cookies parce que je ne sais pas pourquoi on en a besoin si on peut simplement renvoyer le Set-Cookie au navigateur.

#8

Mis à jour par Jérôme Schneider il y a plus de 9 ans

Hop pour suivre toutes les remarques de Benj il y a maintenant 3 patchs :

0001-server-remove-cookies-with-bad-key.patch
0002-mandaye-auth-saml2.py-cleaning-now-useless-hack-to-r.patch
0003-http-remove-old-useless-hack-for-biblio-which-is-use.patch

#9

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

Ack.

#10

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Statut changé de Nouveau à Résolu (à déployer)
#11

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF