Development #34115
Le ?next= se perd à la création de compte
0%
Description
Création d'un compte via l'API, avec send_registration_email_next_url = xxx; ce xxx se trouve bien repris dans l'URL mentionnée dans le message, https://.../accounts/password/reset/confirm/...?next=xxx. Mais à la validation de ce formulaire, je ne me trouve pas envoyé vers xxx.
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0001-tests-test-users-API-with-send_registration_email_ne.patch 0001-tests-test-users-API-with-send_registration_email_ne.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Déjà un test pour montrer que ça marche mais il faut que l'URL qui est passé soit whitelistée.
Mis à jour par Frédéric Péters il y a presque 5 ans
On peut envisager quelque chose au niveau de l'API, répondre en erreur quand send_registration_email_next_url contient une URL qui ne sera pas prise en compte ? Ou logguer le fait que ? (ou bien sûr qu'une URL transmise par l'API soit prise en compte, même si elle n'a pas été explicitement déclarée).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0001-whitelist-send_registration_email_next_url-using-HMA.patch 0001-whitelist-send_registration_email_next_url-using-HMA.patch ajouté
Voilà voilà.
Mis à jour par Paul Marillonnet il y a presque 5 ans
@@ -894,6 +899,11 @@ def good_next_url(request, next_url):
return True
if same_origin(request.build_absolute_uri(), next_url):
return True
+ signature = request.POST.get(constants.NEXT_URL_SIGNATURE) or request.GET.get(constants.NEXT_URL_SIGNATURE)
+
+ if signature:
+ return crypto.check_hmac_url(settings.SECRET_KEY, next_url, signature)
Question de principe j'aurais bien vu cet ajout de code remonter plus haut la fonction good_next_url
: s'il y a une signature, il faut la vérifier. Si la signature ne colle pas, même pour un next
sur une ressource de même origine, c'est qu'il y a une embrouille.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Paul Marillonnet a écrit :
[...]
Question de principe j'aurais bien vu cet ajout de code remonter plus haut la fonction
good_next_url
: s'il y a une signature, il faut la vérifier. Si la signature ne colle pas, même pour unnext
sur une ressource de même origine, c'est qu'il y a une embrouille.
Si on était la NSA je te dirai oui, mais l'avantage que j'y vois c'est que les cas qui marchent déjà ne sont pas impactés et comme le bloquage des URLs de redirection n'est pas non plus une énorme avancée dans la sécurité ça me parait suffisant de dire que les signatures c'est en option du système actuel.
Mis à jour par Paul Marillonnet il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Benjamin Dauvergne a écrit :
Si on était la NSA je te dirai oui
Quand ils nous commanderont une GRU il faudra penser à revenir sur ce ticket.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 26be52b49f64fb1a67677b2def1bc962a96f0226 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Jun 18 20:36:26 2019 +0200 whitelist send_registration_email_next_url using HMAC signature (#34115)
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
whitelist send_registration_email_next_url using HMAC signature (#34115)