C'est une sorte de combinaison spéciale de balises que je veux autoriser dans HTMLPurifier, mais je n'arrive pas à faire fonctionner la combinaison.Comment autoriser les balises script, object, param, embed et iframe dans HTMLPurifier?
Je peux obtenir des balises de script pour fonctionner, mais les balises embed sont supprimées (j'active les balises de script avec HTML.Trusted = true). Lorsque je récupère les balises, les balises de script sont supprimées (je supprime HTML.Trusted). Voici ma config:
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeEmbed', true);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
J'ai même essayé d'ajouter dans la suite qui fait qu'empirer les choses:
$config->set('HTML.Allowed', 'object[width|height|data],param[name|value],embed[src|type|allowscriptaccess|allowfullscreen|width|height],script[src|type]');
, je ne peux pas sembler aussi pour obtenir les iframes de travailler, peu importe quoi. J'ai essayé d'ajouter:
$config->set('HTML.DefinitionID', 'enduser-customize.html iframe');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$iframe = $def->addElement(
'iframe', // name
'Block', // content set
'Empty', // allowed children
'Common', // attribute collection
array(// attributes
'src*' => 'URI#embedded',
'width' => 'Pixels#1000',
'height' => 'Pixels#1000',
'frameborder=' => 'Number',
'name' => 'ID',
)
);
$iframe->excludes = array('iframe' => true);
Toute aide à obtenir l'ensemble combo de travailler, ou même des balises de script avec objet/param et Embed serait très apprécié !!!
Oh oui, ce n'est évidemment pas pour tous les utilisateurs, juste des utilisateurs "spéciaux".
Merci!
PS - s'il vous plaît ne me lie pas à http://htmlpurifier.org/docs/enduser-customize.html
MISE À JOUR
J'ai trouvé une solution pour ajouter iframes au fond du filet ici: http://htmlpurifier.org/phorum/read.php?3,4646
Le courant la configuration est maintenant:
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeEmbed', true);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
$config->set('Filter.Custom', array(new HTMLPurifier_Filter_MyIframe()));
MISE À JOUR DE LA MISE A JOUR
Si vous éprouvez des difficultés avec mon commentaire dans le forum htmlpurifier, il peut être parce que je veux dire pour que la méthode ressemble à ceci:
public function preFilter($html, $config, $context) {
return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));
}
"Ne pas utiliser HTML Purifier". :-) –
HTML Purificateur des roches! Pourquoi ne voudrais-je pas l'utiliser? ;) – shmuel613
Pour être vraiment correct, vous devriez probablement étendre 'HTMLPurifier_Filter'. La solution est par ailleurs géniale. J'utilise à la place des domaines en liste blanche mais en qui j'ai confiance (par exemple, la nouvelle incorporation d'iframe sur youtube). –