Bug de la version 1.8.3+ ?Xonglet=

Bug de la version 1.8.3+ ?Xonglet=

par hervé darce,
Nombre de réponses : 2
Bonjour,

Lorsque l'on tape la succession de lettre "onglet" suivi tout de suite après de "=" moodle transforme celle-ci en "Xonglet="
Un "X" est rajouté automatiquement avant "onglet".

Ceci un peu gênant pour réaliser des liens vers http://www.techno-science.net/?Xonglet=news&news=3953

Je vous assure je n'ai pas ajouté de "X" avant "onglet="

J'utilise la version 1.8.3+ et je constate que ce site, aussi, présente ce bug.

Faites un essai sur vos sites en écrivant "o n g l e t =" évidemment tout attaché.

@+

Moyenne des évaluations  -
En réponse à hervé darce

Re: Bug de la version 1.8.3+ ?Xonglet=

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Je confirme : c'est un bogue, dû à une fonction de nettoyage trop efficace pour éviter les attaques script.

Le code est celui-ci, visible à la ligne 1871 du fichier lib/weblib.php (fonction clean_text). Cette ligne préfixe toutes les chaînes commençant par "on", suivi d'une lettre au moins, puis de zéros ou plusieurs espaces, puis d'un signe égal (=) avec un X majuscules.

$text = eregi_replace("([^a-z])on([a-z]+)(:space:*)=", "\\1Xon\\2=", $text);
En réponse à Nicolas Martignoni

Re: Bug de la version 1.8.3+ ?Xonglet=

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

En effet, le "nettoyage" anti-Javascript de Moodle est parfois trop zélé (style Kärcherblack eye). L'expression régulière trouvée par Nicolas dans la fonction clean_text éliminera à coup sûr tous les événements Javascript, mais éliminera également au passage des mots qui n'en sont pas. Une autre façon de procéder aurait été d'utiliser ici la liste complète des événements Javascript, mais on ne sait même pas si cette liste complète existe, puisqu'elle peut dépendre de la syntaxe propriétaire de certains navigateurs (en particulier MSIE).

Joseph