URL mal formaté dans le mail pour "Mot de passe oublié" #3910

Closed
opened 6 years ago by cyp · 5 comments
cyp commented 6 years ago

Sur deux installations de SPIP en sous-répertoire (apache et nginx), je constate que l'URL qui permet de récupérer son mot de passe est mal formaté.

http://localhost/spip.php?page=spip_pass&p=129552674058b054a01ced83.27305344

devrait être

http://localhost/spip/spip.php?page=spip_pass&p=129552674058b054a01ced83.27305344

Le problème semble venir de la regex qui se trouve à la ligne 87 de ecrire/inc/filtre_mini.php

https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/filtres_mini.php#L87

J'arrive à patcher le truc en ajoutant juste au dessus de la ligne 87 le code suivant, ce qui permet d'ajouter un / à la fin de l'URL (soit après le sous répertoire)

if ($url) { $url .= substr($url, -1) == '/' ? '' : '/'; }

Mon patch n'est surement pas propre et peut faire des bug dans la fonction suivre_lien. Pour celà je le dépose ici.

Sur deux installations de SPIP en sous-répertoire (apache et nginx), je constate que l'URL qui permet de récupérer son mot de passe est mal formaté. http://localhost/spip.php?page=spip_pass&p=129552674058b054a01ced83.27305344 devrait être http://localhost/spip/spip.php?page=spip_pass&p=129552674058b054a01ced83.27305344 Le problème semble venir de la regex qui se trouve à la ligne 87 de ecrire/inc/filtre_mini.php https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/filtres_mini.php#L87 J'arrive à patcher le truc en ajoutant juste au dessus de la ligne 87 le code suivant, ce qui permet d'ajouter un / à la fin de l'URL (soit après le sous répertoire) ` if ($url) { $url .= substr($url, -1) == '/' ? '' : '/'; }` Mon patch n'est surement pas propre et peut faire des bug dans la fonction suivre_lien. Pour celà je le dépose ici.
b_b commented 6 years ago
Owner

Je ne reproduis pas sous SPIP 3.2 dev ni sous SPIP 3.1.4, le lien de rappel comporte bien l'url complète du site, exemple :

http://localhost/hop/spip.php?page=spip_pass&p=136759157258bdc044d07e59.23927982
Statut changé à En cours

Je ne reproduis pas sous SPIP 3.2 dev ni sous SPIP 3.1.4, le lien de rappel comporte bien l'url complète du site, exemple : http://localhost/hop/spip.php?page=spip_pass&p=136759157258bdc044d07e59.23927982 **Statut changé à En cours**
cyp commented 6 years ago
Poster

Salut b_b,

Je viens de faire le test avec la version 3.1.4 et je n'ai plus ce problème en effet. Par contre, j'ai une version de 3.1.3 sous la main et je reproduis bien le problème en local ?
Après, je ne vois pas se qui change dans le code, utils.php et filtre_mini.php n'ont pas changé. Je ne sais pas où sont versionnés les fichiers du répertoire squelettes-dist pour vérifier les modifications dans formulaires/oubli.php

Salut b_b, Je viens de faire le test avec la version 3.1.4 et je n'ai plus ce problème en effet. Par contre, j'ai une version de 3.1.3 sous la main et je reproduis bien le problème en local ? Après, je ne vois pas se qui change dans le code, utils.php et filtre_mini.php n'ont pas changé. Je ne sais pas où sont versionnés les fichiers du répertoire squelettes-dist pour vérifier les modifications dans formulaires/oubli.php
cyp commented 6 years ago
Poster

Ok squelettes-dist/formulaires/oublie.php a été patché entre la version 3.1.3 et 3.1.4

$ diff -pu spip-3.1.3/squelettes-dist/formulaires/oubli.php spip-3.1.4/squelettes-dist/formulaires/oubli.php
--- /home/www/default/spip/squelettes-dist/formulaires/oubli.php	2016-09-30 23:38:54.000000000 +0200
+++ spip/squelettes-dist/formulaires/oubli.php	2017-03-06 10:30:18.000000000 +0100
`` -35,7 +35,7 `` function message_oubli($email, $param) {
 		$msg = recuperer_fond(
 			"modeles/mail_oubli",
 			array(
-				'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"),$GLOBALS['meta']['adresse_site'])
+				'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"), $GLOBALS['meta']['adresse_site'] . '/')
 			)
 		);
 		include_spip("inc/notifications");

Ok squelettes-dist/formulaires/oublie.php a été patché entre la version 3.1.3 et 3.1.4 <pre> $ diff -pu spip-3.1.3/squelettes-dist/formulaires/oubli.php spip-3.1.4/squelettes-dist/formulaires/oubli.php --- /home/www/default/spip/squelettes-dist/formulaires/oubli.php 2016-09-30 23:38:54.000000000 +0200 +++ spip/squelettes-dist/formulaires/oubli.php 2017-03-06 10:30:18.000000000 +0100 `` -35,7 +35,7 `` function message_oubli($email, $param) { $msg = recuperer_fond( "modeles/mail_oubli", array( - 'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"),$GLOBALS['meta']['adresse_site']) + 'url_reset' => url_absolue(generer_url_public('spip_pass', "$param=$cookie"), $GLOBALS['meta']['adresse_site'] . '/') ) ); include_spip("inc/notifications"); </pre>
b_b commented 6 years ago
Owner

Ha oui, c'est moi qui ait corrigé ce bug, j'aurai pu m'en rappeler, désolé :\

https://zone.spip.org/trac/spip-zone/changeset/100356

On ferme du coup :)
Statut changé à Fermé

Ha oui, c'est moi qui ait corrigé ce bug, j'aurai pu m'en rappeler, désolé :\ https://zone.spip.org/trac/spip-zone/changeset/100356 On ferme du coup :) **Statut changé à Fermé**
cyp commented 6 years ago
Poster

C'était il y a 4 mois, il sait passé pleins d'événement entre temps ;)

On peut fermer.

C'était il y a 4 mois, il sait passé pleins d'événement entre temps ;) On peut fermer.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.