filtre html en PHP

Posté le mardi 13 février 2007 à 7 h 33, Read it in english with Google

cela faisait longtemps que je cherchais un bon filter de syntaxe HTML en PHP pour pouvoir enfin proposer aux posteurs d’écrire les commentaires en HTML pure.

Tout le monde jusqu’alors a dérivé cette problèmatique. Entre le BBcode, le wikitext (mainte fois reproduit), le Textile, le zcode (bbcode avec des > <) on est bien loin de la simplicité, des normes et du potentiel du language HTML. Par contre niveau sécurité, c’est sur qu’on est tranquille vu qu’on peut pas faire grand chose 🙂

Comme l’a dit Einstein :
Une personne intelligente résout un problème. Une personne sage l’évite.

Il faut croire qu’on est rentré dans l’air de l’intelligence 😀 , voici HTML Purifier

Attention, HTML purifier n’est pas un filtre batard, la syntax HTML qui ressort est valider par le W3C.
On est bien loin des anciens filtres comme PHP Input Filter (franchement limité), kses (mais où est le site officiel ?), le package PEAR HTML_Safe… etc
Ici c’est de l’or en barre, mais l’or ça pèse lourd. Je doute que les applications qui l’utiliseront filtreront les posts avant chaque affichage comme c’est le cas actuellement (punbb, IPB…).

C’est gourmand, mais efficace. Bien entendu, HTMLPurifier peut vous enlever les interactions javascript (qui pourrais provoquer des failles XSS). Tout est entièrement paramètrable, restreindre un attribut, une classe CSS, empêcher l’application d’un paramètre CSS, enlever les liens ou les images avec des URL externe, tout ce qu’on pouvait en attendre !!! Un petit plus, il parse aussi dans l’encodage que l’on veut !!! vraiment magnifique.

Le projet est tout jeune, il reste quelques améliorations à faire mais on en parle de plus en plus. Je suis encore en phase de test mais ça parait TRES prometteur et peut-être qu’enfin on pourra offrir des interfaces WYSIWYG dans les forums et les blogs 🙂

7 réponses à “filtre html en PHP”

  1. Delapouite

    Merci pour cette réponse claire sur ce problème pourtant si banal.

    Quelles sont les résultats de ta phase de test finalement ?

  2. XoraX

    Difficile à dire…
    L’éxécution n’est pas lente mais on obtient des résultats à la limite de l’acceptable pour une utilisation en directe.
    Tout d’abord il faut savoir que html-Purifier utilise, si il peut, la classe DOMDocument de php5. Cette classe n’étant pas disponible sous php4, il utilisera dans ce cas son propre parser php appelé DirectLex. Étonnamment, la différence n’est pas flagrante…

    voici quelques statistiques fait avec la méthode purify et la config par defaut de HTMLPurifier. Afin de mieux comparer, je les ai fais sur plusieurs serveurs, tous sur php5/cgi sauf mon P4, et réalisé hors des heures de pointe.

    Le parser PEARSax3 est un parser disponible sur PEAR que HTMLPurifier a implémenté comme option, je l’ai mis histoire de comparer et de rabaisser la notoriété de certains… « This post » correspond au texte de cet article 🙂

    P3 HT 3GHz, 768Mo DDR

    Case DirectLex PEARSax3 DOMLex
    HTML filesize: 4133 100.00% 0.0321 108.14% 0.0348 73.78% 0.0237
    HTML filesize: 3245 100.00% 0.0291 130.34% 0.0379 87.21% 0.0254
    HTML filesize: 6056 100.00% 0.0513 135.66% 0.0696 126.32% 0.0648
    HTML filesize: 66654 100.00% 0.6258 140.08% 0.8767 135.57% 0.8484
    <a href="foo> 100.00% 0.0053 99.03% 0.0053 34.29% 0.0018
    <a "=> 100.00% 0.0016 119.55% 0.0019 83.99% 0.0013
    This post 100.00% 0.0394 142.61% 0.0562 99.68% 0.0393

    1&1 serveur mutualisé

    Case DirectLex PEARSax3 DOMLex
    HTML filesize: 4133 100.00% 0.0266 107.70% 0.0286 98.92% 0.0263
    HTML filesize: 3245 100.00% 0.0346 98.59% 0.0342 66.78% 0.0231
    HTML filesize: 6056 100.00% 0.0501 133.98% 0.0672 104.79% 0.0525
    HTML filesize: 66654 100.00% 0.4791 146.83% 0.7035 90.21% 0.4322
    <a href="foo> 100.00% 0.0009 253.26% 0.0023 118.38% 0.0011
    <a "=> 100.00% 0.0007 133.66% 0.0009 119.31% 0.0008
    This post 100.00% 0.0188 144.30% 0.0271 89.95% 0.0169

    la dédibox de billy

    Case DirectLex PEARSax3 DOMLex
    HTML filesize: 4133 100.00% 0.0361 99.58% 0.0360 76.10% 0.0275
    HTML filesize: 3245 100.00% 0.0300 130.98% 0.0392 95.42% 0.0286
    HTML filesize: 6056 100.00% 0.0640 129.89% 0.0831 99.31% 0.0635
    HTML filesize: 66654 100.00% 0.6368 131.40% 0.8368 99.35% 0.6327
    <a href="foo> 100.00% 0.0017 490.77% 0.0082 117.19% 0.0020
    <a "=> 100.00% 0.0012 134.93% 0.0016 125.69% 0.0015
    This post 100.00% 0.0258 135.50% 0.0349 93.52% 0.0241

    Tout dépend donc du volume de données que l’on a traiter, mais généralement mieux vaut tout de même utiliser le cache.

  3. werutzb

    Hi!

    I want to extend my SQL knowledge.
    I red so many SQL books and would like to
    read more about SQL for my work as db2 database manager.

    What would you recommend?

    Thanks,
    Werutz

  4. cool

    Merci pour l’info, mais pour l’amour de dieu, tu n’as donc pas de correcteur orthographique ????

  5. XoraX

    ouè j’avoue…. je corrigerais ce soir 🙂

  6. schoooler

    Hi, i’m schoooler

    I’m new to the forum and just saying hello.

  7. ridha

    la version 4.1.1 date de mai 2010 et pourtant elle comporte des fonctions signalées deprecated par php 5.3. bizarre

Laissez un commentaire :