We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Compatibilité IE8 > Suite au correctif JCMS-3751

thomas lavocat · on 1/31/14 at 10:24 AM

Bonjour,

De ce que j'ai compris, le correctif JCMS-3751 apporte entre autre un échappement des caractères pour éviter les injections de javascript. Hors cette fonction échappe les appostrophes en ' ce qui n'est pas compatible avec IE8. Un de nos clients nous a rapporté ce bug après migration de JCMS 7 à JCMS 8sp2.

Pour la visualiser il faut utiliser une machine sous XP avec IE8 (j'utilse une vm pour ça). Car elle n'est pas forcément visible sur un IE10 downgradé en IE8 via les options de développement.

Y aura-t-il un correctif ?

En attendant, si ça arrive à d'autres, voici le kludge provisoire que j'ai placé sur tout les champs qui récupèrent du wysiwyg :
<jalios:wysiwyg><%= obj.getTexte(userLang).replaceAll("apos;", "#39;")  %></jalios:wysiwyg>

Cordialement,

31 pts
Olivier Jaquemet - on 2/6/14 at 12:14 PM
Best answer

Effectivement ...

J'ai saisi une issue sur notre base des bugs pour suivi et correction :

J'ai saisi une issue sur le projet JSoup :

J'ai forké le projet JSoup et réalisé un correctif spécifique

Une build spécifique de JSoup 1.3 est disponible dans l'issue JIRA JCMS-4000 et peut être utilisée comme patch correctif, en remplacement du fichier WEB-INF/lib/jsoup-1.7.2.jar livré dans JCMS 8.0 SP2

Il faudra que j'étudie plus en avant la meilleure approche pour fournir un correctif définitif dans JCMS :/

Merci de ton retour Thomas.

#1

J'oublie de préciser que en plus du contournement évoqué par Lionel, il est également possible de désactiver le nettoyage du HTML avec la propriété suivante :

wysiwyg.sanitize-html: false 
Mais uniquement si tous les contributeurs de contenu wysiwyg (en standard boite à idée, question, blog, article) sont considérés comme des utilisateurs de confiance.

Olivier Jaquemet · on 2/6/14 at 12:19 PM
#2

Merci Olivier pour cette information.

Lionel Pouilly · on 2/6/14 at 12:42 PM
9 pts
Sylvain DEVAUX · on 1/31/14 at 10:37 AM

Bonjour,

 

je ne suis pas le plus à même de discuter de ce correctif, mais en tout cas, merci pour votre partage :)

0 pts
Alain D'heygère · on 2/5/14 at 5:19 PM

Effectivement "&apos;" n'est pas une entité reconnue dans le HTML 4 (http://www.w3.org/TR/html4/sgml/entities.html) qui est supporté par IE8. Il faut plutôt utiliser l'équivalent numérique "&#39;" en l'occurence. Je demande une analyse par notre R&D.

 

0 pts
Lionel Pouilly · on 2/5/14 at 5:46 PM

Bonjour,

Cette anomalie existe sur tous les champs de type "Wysiwyg" sous IE8 et JCMS 8.0.2.

En attendant un correctif de Jalios, il est possible de contourner temporairement le problème de façon globale en passant par la méthode afterRendering de la classe WysiwygPolicyFilter avec text.replaceAll("apos;", "#39;");

 



#1

Merci pour la partage Lionel ! ;)

Sylvain DEVAUX · on 2/6/14 at 10:33 AM
4 pts
David Gothel · on 4/18/16 at 3:26 PM

Bonjour

Est ce que ce point a maintenant un correctif définitif ou bien la méthode du Jsoup modifié ou WysiwygPolicyFilter est encore d'actualité ?

 

Cordialement.?

#1

JCMS est livré avec une version personnalisé de JSoup 1.x incluant le correctif. C'est notre correctif officiel.

Les versions 2.x de JSoup sont a priori exempt du bug, nous verrons à l'incure dans une prochaine version majeures.

Olivier Jaquemet · on 4/18/16 at 3:35 PM
#2

Bonjour olivier.

Nous constatons le problème sur un de nos projets 8.0.3 (avec donc un Jsoup custom). Est ce que tu aurais une idée de pourquoi il pourrait continuer malgré le Jsoup custom ?

David Gothel · on 5/27/16 at 10:39 AM
2 pts