This project is archived. Its data is read-only. This project is read-only.
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 est `if_match: "/<(?:script|iframe|embed|object|img|image|body|bgsound|meta)/iS"` et est devenue `if_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 https://git.spip.net/spip-contrib-extensions/htmlpurifier/src/branch/master/wheels/spip/echappe-js.yaml#L24 `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).
issue

Forge communautaire SPIP | Charte d'utilisation | Signaler un problème sur ce site