Project

General

Profile

Anomalie #4167

Script JVS affiché lors de la redirection après un login réussi en mode parano

Added by Guillaume Fahrner over 2 years ago. Updated about 2 months ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Category:
authentification
Target version:
Start date:
08/11/2018
Due date:
% Done:

0%

Resolution:
fixed
Navigateur:

Description

Tout est dans le titre/tweet :

https://twitter.com/blablachet/status/1028013586935963650
https://twitter.com/blablachet/status/1028024047009976327

Avec le mode parano, le script Javascript utilisé pour réaliser la redirection lors d'un login réussi n'est plus exécuté mais échappé et affiché dans 'message_ok'.

Associated revisions

Revision 24038 (diff)
Added by bruno@eliaz.fr over 2 years ago

Fix #4167 : éviter d'afficher le script de redirection js quand le form de login est utilisé en ajax avec le mode parano

Revision 24039 (diff)
Added by bruno@eliaz.fr over 2 years ago

report de r24038

Fix #4167 : éviter d'afficher le script de redirection js quand le form de login est utilisé en ajax avec le mode parano

History

#1 Updated by b b over 2 years ago

  • Status changed from Nouveau to En cours

En attendant une solution intégrée au core, tu dois pouvoir contourner le problème en personnalisant le html du formulaire pour lui ajouter la classe noajax.

#2 Updated by b b over 2 years ago

Une solution intégrée au core pourrait être d'appliquer la classe noajax au formulaire de login quand le site est en mode parano, ainsi la redirection ne serait pas effectuée en js dans ce mode. Des avis ?

#3 Updated by Guillaume Fahrner over 2 years ago

Clairement contre, je veux utiliser ajax dessus.

Si le commentaire ici est correcte https://core.spip.net/projects/spip/repository/entry/spip/prive/formulaires/login.php#L120 est que l'appel en dessous ne sert qu'a avoir un lien alors le patch suivant suffit à régler le problème sans perdre en fonctionnalité :

https://core.spip.net/projects/spip/repository/entry/spip/prive/formulaires/login.php#L121 deviendrait :


$m = redirige_formulaire($res['redirect'], '', 'ajaxform')[1];

#4 Updated by b b over 2 years ago

Après vérification, je ne reproduis pas sur le trunk puisque le formulaire de login n'est pas en ajax par défaut...

Le problème ne se pose donc que si les squelettes ont été personnalisés pour ajaxer le formulaire de login.

#5 Updated by b b over 2 years ago

  • Status changed from En cours to Fermé
  • Resolution set to fixed

Et hop on ferme (puisque redmine ne travaille pas les jours fériés).

#6 Updated by cedric - about 2 months ago

  • Status changed from Fermé to En cours
  • Resolution deleted (fixed)

Je réouvre car :
- le fix a provoqué un bug cf #4167
- le bug n'a rien a voir avec le mode parano, car parano ou pas le JS est toujours filtré dans le public par interdire_script().

Mais on peut reproduire le bug si on a du contenu envoyé avant d'atteindre la ligne redirige_formulaire() : dans ce cas la redirection par en-tete ne peut se produire, et du coup c'est un retour qui se fait en JS, qui pas de chance est échappé lors de l'affichage de #ENV*{_deja_loge}
La solution est d'utiliser ici un #ENV**{_deja_loge} vu que cette variable d'environnement est uniquement peuplée par la fonction charger() du formulaire et que elle ne peut être injectée par une variable de GET ou POST

#7 Updated by cedric - about 2 months ago

  • Status changed from En cours to Fermé
  • Resolution set to fixed

Also available in: Atom PDF