Beaucoup de code pour un simple safehtml() partout à la fin
Bon, j'ai eu du mal à dérouler la pelotte pour comprendre ce que faisait vraiment le plugin.
En fait,
- la fonction
echapper_html_suspect()
appelée https://git.spip.net/spip-contrib-extensions/htmlpurifier/src/branch/master/inc/texte.php#L817 ne sert plus à rien puisque on echappe tout le html juste au dessus - tout se fait via la rule
securite-js
https://git.spip.net/spip-contrib-extensions/htmlpurifier/src/branch/master/wheels/spip/interdire-scripts.yaml#L21 qui dans le core estif_match: "/<(?:script|iframe|embed|object|img|image|body|bgsound|meta)/iS"
et est devenueif_match: "/<[a-z]+/iS"
Donc en gros dès qu'on a une balise html on appelle echappe_js()
, ce qui est le cas de tout ce qui passe dans propre()
Une fois dans echappe_js, ona cette rule un peu chelou
match: "{<[a-z]+.*?($|>)}UisS"
avec un double "non greedy" qui s'annule, et donc en gros on prend toutes les balises et on les envoie dans la fonction echappe_anti_xss()
laquelle fait donc un safehtml()
qui est un appel à la lib Purifier
https://git.spip.net/spip-contrib-extensions/htmlpurifier/src/branch/master/wheels/spip/echappe-js.php#L23
En résumé, beaucoup de surcharges de code et de complication pour juste faire un appel à purifier sur chaque balise html du contenu en post-propre et post-typo, ce qui pourrait se faire bien plus simplement par un appel depuis les 2 pipelines, une fois que SPIP a fait tout son travail.
(et éventuellement en annulant la fonction echapper_html_suspect()
si elle nous embête plutôt qu'autre chose).