Projet

Général

Profil

Development #33087

NoReverseMatch sur logout avec next \"backend

Ajouté par Thomas Noël il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
14 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

C'est dans le cadre d'un fuzzing, mais la réponse est assez bizarre.

Internal Server Error: /logout/

NoReverseMatch at /logout/
Reverse for '\"backend' not found. '\"backend' is not a valid view function or pattern name.

Request Method: GET
Request URL: https://connexion-xxx.test.entrouvert.org/logout/?local=ok&next=%5c%22backend
Django Version: 1.11.20
Python Executable: /usr/bin/python
Python Version: 2.7.13
Python Path: ...
Server time: mar, 14 Mai 2019 12:54:30 +0200
Installed Applications:
''
Installed Middleware:
''
Traceback:

File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python2.7/dist-packages/authentic2/views.py" in logout
  575.     response = utils.redirect(request, next_url)

File "/usr/lib/python2.7/dist-packages/authentic2/utils.py" in redirect
  326.                    include=include, exclude=exclude, fragment=fragment, resolve=resolve)

File "/usr/lib/python2.7/dist-packages/authentic2/utils.py" in make_url
  271.         url = resolve_url(to, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/django/shortcuts.py" in resolve_url
  147.         return reverse(to, args=args, kwargs=kwargs)

File "/usr/lib/python2.7/dist-packages/django/urls/base.py" in reverse
  91.     return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "/usr/lib/python2.7/dist-packages/django/urls/resolvers.py" in _reverse_with_prefix
  497.         raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /logout/
Exception Value: Reverse for '\"backend' not found. '\"backend' is not a valid view function or pattern name.
Request information:
USER: AnonymousUser

GET:
local = u'ok'
next = u'\\"backend'

POST: No POST data

FILES: No FILES data

COOKIES: No cookie data


Fichiers


Demandes liées

Copié depuis Authentic 2 - Bug #33086: crash sur mauvaise URL next lors du logoutRejeté14 mai 2019

Actions

Révisions associées

Révision 7be25fff (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

views: validates logout next URL (#33087)

Historique

#1

Mis à jour par Thomas Noël il y a presque 5 ans

Même genre avec next=( :

NoReverseMatch at /logout/
Reverse for '(' not found. '(' is not a valid view function or pattern name.

Request Method: GET
Request URL: https://connexion-departement06.test.entrouvert.org/logout/?local=ok&next=(
#2

Mis à jour par Thomas Noël il y a presque 5 ans

Et plus amusant :

Internal Server Error: /logout/

NoReverseMatch at /logout/
Reverse for 'amsterdam' not found. 'amsterdam' is not a valid view function or pattern name.

Request Method: GET
Request URL: https://connexion-departement06.test.entrouvert.org/logout/?local=ok&next=amsterdam
#3

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Assigné à mis à Benjamin Dauvergne
#4

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

À appliquer après #32934.

Ce patch évite aussi d'utiliser utils.redirect() qui doit être réservé à un
usage interne, shortcuts.redirect() suffit pour un des URLs bruts.

Ça valide toutes les URLs next vis à vis de la whitelist dynamique, mais bon normalement personne n'est sensé appeler notre URL de logout à part authentic.

#5

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Copié depuis Bug #33086: crash sur mauvaise URL next lors du logout ajouté
#7

Mis à jour par Paul Marillonnet il y a presque 5 ans

La vue logout perd la possibilité de choisir le garabit à rendre, alors qu'il est toujours présent dans la vue login. Ça me plaît moyen d'avoir cette possibilité pour l'une de ces deux vues mais pas pour l'autre.

#8

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Paul Marillonnet a écrit :

La vue logout perd la possibilité de choisir le garabit à rendre, alors qu'il est toujours présent dans la vue login. Ça me plaît moyen d'avoir cette possibilité pour l'une de ces deux vues mais pas pour l'autre.

On ne s'en sert pas, c'est du vieux code, la plupart des paramètres de vue sont inutiles, ça date de nos débuts en Django, j'essayais d'écrire les vues comme les vues générique des contribs django mais ça ne sert à rien.

#9

Mis à jour par Paul Marillonnet il y a presque 5 ans

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

Benjamin Dauvergne a écrit :

On ne s'en sert pas, c'est du vieux code

(Est-ce qu'on aurait pas intérêt à créer un ticket de nettoyage de ce vieux code ?)

#10

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Paul Marillonnet a écrit :

Benjamin Dauvergne a écrit :

On ne s'en sert pas, c'est du vieux code

(Est-ce qu'on aurait pas intérêt à créer un ticket de nettoyage de ce vieux code ?)

Je préfère qu'on réécrive chaque vue progressivement.

#11

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 7be25fff6998b0db94c1d36e6454055bcc20dad8
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Tue May 14 16:56:14 2019 +0200

    views: validates logout next URL (#33087)
#12

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF