Bug #5598
Mieux tester les cookies
0%
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
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 ?
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.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier
0001-server-remove-cookies-with-bad-key.patchsupprimé
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier
0002-cleaning-now-useless-tests-for-valid-cookies.patchsupprimé
Mis à jour par Jérôme Schneider il y a plus de 9 ans
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.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier 0001-server-remove-cookies-with-bad-key.patch 0001-server-remove-cookies-with-bad-key.patch ajouté
- Fichier 0002-mandaye-auth-saml2.py-cleaning-now-useless-hack-to-r.patch 0002-mandaye-auth-saml2.py-cleaning-now-useless-hack-to-r.patch ajouté
- Fichier 0003-http-remove-old-useless-hack-for-biblio-which-is-use.patch 0003-http-remove-old-useless-hack-for-biblio-which-is-use.patch ajouté
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
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de Nouveau à Résolu (à déployer)
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Statut changé de Résolu (à déployer) à Fermé