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 🙂

10 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

  8. bigots

    Renee Rochelle Christmas With Renee https://pagead2.apartments-cyprus.co.uk/97.html Annelies Schmidt De Neveu Johann Sebastian Bach Sonate Fur Violoncello Solo Nr 5 C moll Nr 6 D dur

  9. visit this link

    An increasing number of of us are using self storage as a option to store these special
    and even not so special items. The uses are as diverse because the wants of
    its consumers and the industry itself has changed to meet these needs.
    Self storage isn’t just somebody putting items they no
    longer want in a storage type room but has expanded
    to be more handy and to satisfy each kind of need.After
    all, when somebody thinks of self storage they do usually consider a garage kind
    facility the place they could, for a charge, store their items.
    And that sort of facility does still exist. These primary storage rooms vary at every of the
    numerous locations. They can vary from an outsized closet to a much bigger
    area depending on the shoppers needs, and the value they are prepared to pay.

    These amenities are located virtually in all places so
    finding a convenient location may be very simple.The concept is easy; you
    unload your merchandise into the area, close the
    door and lock it. You pay a month-to-month payment, based on the house and placement
    and you are all set. That is especially good for items you don’t want day-after-day or for somebody who could between homes.

    This service provides an area to store objects, that you’re not
    sure you might be ready to surrender, and gadgets that
    you simply have to hold for a time. Many places
    even provide the free use of a transferring truck to help you move your issues
    to their unit.Even this easy concept has totally different variations.

    Some self storage models provide air conditioned items,
    and security patrolled locations. Relying on your storage wants, these would possibly better suit your situation. Many locations even offer recreational car
    or boat self storage. This may be particularly helpful if your own home
    does not have parking accessible and you cannot or do not want to park your
    extra automobile on the street. Access hours are often very
    convenient, and the places are usually accessible via a locked gate or fence.

  10. ?????? ???????? ??????????

    WOW just what I was searching for. Came here by searching for ajax

Laissez un commentaire :