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.

Limitation sur l'utilisation d'une IFrame dans un wysiwig

Arnaud Beauvoir · on 8/14/18 at 3:02 PM

Bonjour,

Je souhaite ajouter et limiter les URL dans l'utilisation des iframes a l'intérieur d'un éditeur de type wysiwyg (TinyMCE). 

Pour cela j'ai ajouter dans le custom.prop les lignes suivantes : 

wysiwyg.sanitize-html.whitelist.iframe.enabled: true
wysiwyg.sanitize-html.whitelist.iframe.tags:\

iframe[class|style|name|marginheight|marginwidth|scrolling|id|width|height|src|frameborder|align|mozallowfullscreen|webkitallowfullscreen|allowfullscreen|allow]

(j'ai aussi modifié l'attribut channel.forbidden-html)

Par contre je souhaiterai limiter le champ SRC uniquement à un domaine. Comment peut on faire cela ?

J'ai essayé d'ajouter une instruction de la forme :

wysiwyg.sanitize-html.whitelist.iframe.protocols.iframe: src[*youtube.com*] 

mais cela ne semble pas fonctionner et me retire tous les parametres SRC (youtube, vimeo, autre ...)

Est ce possible ? Et si oui quelqu'un connait il la bonne syntaxe ?

4 pts
Olivier Jaquemet · on 8/14/18 at 3:12 PM

Bonjour, 

Pour les attributs src, href, il est possible de préciser uniquement un protocole, pas une pattern d'URL valide. Dans le détail, les whitelist sont chargées WysiwygManager.loadWhitelist(JProperties).
Des exemples de syntaxe sont précisés dans la javadoc de cette méthode (cf lien ci-dessus).

Pour répondre à votre besoin (dont la démarche est très bonne en terme de sécurisation), vous pouvez éventuellement adopter l'approche suivante :

  1. autoriser toutes les iframes coté TinyMCE
  2. implémenter une WysiwygPolicyFilter, par exemple dans la méthode beforeClean ou afterClean,  pour y ajouter votre propre nettoyage, en utilisant les API JSoup
2 pts