Est-il un filtre HTML HTML Purificateur qui est en HTML5 compatible?
plzsendtehcodez bounty
Question récurrente, pas suffisamment documentés encore. Aucun des autres HTML de nettoyage de solutions pour PHP est à l'entière charge du HTML5 encore. HTMLPurifier est probablement la meilleure option. Mais l'artisanat englobante de configuration pour la prise en charge du HTML5 n'est pas si facile. Donc la question est, ce qui est une façon sensée pour le faire?
HP peut être configuré pour reconnaître le nouveau avec des étiquettes:
// setup configurable HP instance
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'html5 draft');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // no caching
$def = $config->getHTMLDefinition(true);
// add a new tag
$form = $def->addElement(
'article', // name
'Block', // content set
'Flow', // allowed children
'Common', // attribute collection
array( // attributes
)
);
// add a new attribute
$def->addAttribute('a', 'contextmenu', "ID");
C'est clairement un peu de travail, car il ya beaucoup de nouvelles balises HTML5 et les attributs à ajouter. Et de nouveaux attributs globaux doivent être enregistrés auprès de chaque html4 tag (est-il un moyen facile de faire cela?). Donc évidemment, il devrait être utile format/structure du tableau de flux de configuration y compris l'étiquette et les informations de contexte (inline/bloc/vide/flux/..).
Et bien sûr, pas toutes les nouvelles balises HTML5 sont aptes à être autorisée sans restriction. HTMLPurifier est tout au sujet de filtrage de contenu, et de ne pas compromettre la dangerosité de balises et d'attributs doivent être pris en considération. <canvas>
par exemple, pourrait ne pas être que grand d'une affaire lorsqu'il apparaît dans le contenu de l'utilisateur, comme c'est inutile, au mieux, sans Javascript (HP déjà filtre). Mais d'autres balises et attributs peut être indésirable; ainsi, une configuration flexible structure est impératif, de sorte qu'il est facile d'activer/désactiver les balises et leurs attributs.
Un autre subproblem ici est de trouver un utilisable liste des nouveaux HTML5 choses à ajouter:
- http://simon.html5.org/html-elements
- http://www.w3.org/TR/html5-diff/#new-elements
- http://www.w3.org/TR/html5-diff/#new-attributes
(Et oui, je pense que nous sommes tous conscients que le HTML5 est encore un projet. Il est toutefois aussi important d'être conscient de qui il est déjà en cours d'utilisation quand même.)
# mostly confused about how to extend existing tags:
$def->addAttribute('input', 'type', "...|...|...");
# or how to allow data-* attributes (if I actually wanted that):
$def->addAttribute("data-*", ...
J'espère que le troisième prime +500 est assez pour enflammer quelques configuraton de codage ici, ou quelqu'un d'enquêter sur la manière d'aborder ce intelligemment.