Le 10 février 2012 12:56, Jocelyn Jaubert <jocelyn.jaub...@gmail.com> a écrit : > Bonjour, > > (je redirige sur dev-fr où ça a plus sa place) > > Le 10 février 2012, Philippe Verdy a écrit : > >> 369 self._write(' %s=%s' % (name, quoteattr(value))) >> 378 self._write(' %s=%s' % (name, quoteattr(value))) >> >> En effet, la fonction Python quoteattr() ne représente pas >> correctement le caractère "&" qu'il laisse sous cette forme, alors >> qu'il FAUT le réencoder sous la forme "&" >> >> La fonction quoteattr() est importée depuis le module Python >> "sax.saxutils", absent dans les sources GIT d'Osmose. C'est elle qui >> est ici en cause. > > Cette fonction fait parti de la librairie python standard, et sa > documentation se trouve là: > > http://docs.python.org/library/xml.sax.utils.html > > D'après la doc, quoteattr() échappe bien les & < et >, donc je ne > comprends pas le problème.
Tu as une doc à jour, mais pas le module Python à jour qui correspond, sans doute un module de Python v1. Il y a eu de nombreuses corrections de sécurité dedans (y compris une correction dans l'ordre de substitution de "&", uniquement dans Python 2.1.1, puis ensuite des tentatives "simplifications" du code sans utiliser escape() en interne... suivi aussitôt d'une anomalie avec une attaque de sécurité XSS sur un certain nombre de sites. C'est pour ça que je t'ai fourni des liens vers des versions correctes. Car je ne sais pas du tout quelle version tu as chargée et utilisée (depuis quel repository Python ??? Il y en a plein, pas toujours conformes à l'original ou ne prenant pas en compte les corrections pourtant approuvées). > Est-ce que tu pourrais donner un lien sur osmose.openstreetmap.fr qui > montrerait le problème ? (avec le permalink en bas à droite) Oui, mais j'ai corrigé un problème, il n'apparait plus dans Osmose là où je l'ai vu la première fois. J'en ai vu ailleurs dans les noms relations de sites géodésiques (dont les membres sont des noeuds groupés sur une même collection dont la relation donne une référence commune avec une URL vers le site de géosésie de l'IGN, ces URL contenant des "&" puisqu'elles contiennent des paramètres. Et j'ai vu ces mêmes URL corrompues par endroit (j'aurais du regarder l'historique, pour voir que cela venait bien de rawedit). Si tu n'en voit pas, crée un point avec une erreur de tonomymie dans JOSM qu'Osmose signalera (par exemple donne un nom comme "BOUTIQUE C&A", Osmose ralera sur les majuscules, ouvre le noeud signalé. Tu verras que même sans rien toucher, il refusera la modification. Mets une URL en valeur contenant des paramètres de requêtes: dans JOSM il n'est pas nécessaire et on ne doit rien substituer à l'écran, JOSM fait correctement les encodages et décodage URL quand il utilise l'API d'OSM (mais pas Osmose aussi bien dans ses URLs insérées dans le Frontend HTML/CSS/JS que dans le code Javascript qui communique en XML avec le Backend d'Osmose, qui vérifie la requête puis renvoie vers l'API d'OSM). >> ==== Deuxième problème (lié au premier) === >> >> Enfin je note que le code Javascript envoyé au client utilise le >> constructeur: new XMLHttpRequest(), mais sans préciser le jeu de >> caractères qui sera utilisé pour dialoguer avec le serveur : > > Le fait que la page html et le fichier .js soient encodées en UTF-8 via > les headers HTTP ne suffit pas à informer le navigateur ? > > > Et est-ce que tu peux donner un exemple d'objet "corrompu" sur OSM ? Si tu charges une zones assez grande dans JOSM, il suffit de regarder les valeurs chargées énumérées dans la liste de valeurs existantes d'un attribut comme "source". Tu y verras des tas de caractères "<?>" noirs là où auraient du rester des caractères accentués, visiblement édités sur un navigateur Macintosh; sélectionne cette valeur dans la liste, uniquement pour la copier dans le presse-papier. Puis recherche les objets contenant cette valeur incorrecte. Tu vas en trouver beaucoup. Ensuite regarde les historiques: tu verras qu'ils proviennent de "rawedit". _______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr