IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Purger le HTML


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Points : 134
    Points
    134
    Par défaut Purger le HTML
    Bonjour et bonne année à tous !

    quelqu'un connaît un script, une classe ou un bon début de code pour purger une chaine HTML svp ?

    Je m'explique en fait je cherche à autoriser le HTML aux utilisateurs mais tout de même purger les mauvaise balises comme bloquage du javascript (balise et dans attribut), certains attributs comme style, class, etc.
    Une sorte de strip_tags() amélioré en gros.

    Le mieux que j'ai trouvé est HTML purifier qui sur le papier est parfais mais dans la pratique efface la moitié du contenu et en plus consomme 4M de mémoire vive en exécution

    J'espère pouvoir trouver de l'aide ici parce que le faire moi même en partant de rien j'en ai pour une semaine et je vais laisser des failles grosses comme celles de Windows.

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonsoir,

    Si tu veux une strip_tags() améliorée, il va te falloir la coder intégralement afin de valider ou non les différentes balises permises.

    A ma connaissance ^^
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Membre habitué Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Points : 134
    Points
    134
    Par défaut
    Le problème c'est que je ne connaît pas avec exactitude les balises et attributs dont il faut se méfier, autant partir sur quelque chose ou une liste existante.

    A ma connaissance ^^
    Pour ta connaissance voici quelque script du style : http://htmlpurifier.org/comparison.html

    HTML purifier est très gourmand et trop restrictif, il vire la moitié du contenu passé en argument hélas.

    Je continu mes recherches ...

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Autoriser le HTML pour les entrées utilisateur ne se fait quasiment plus, sûrement à cause des problèmes de sécurité.
    Pourquoi ne pas plutôt te tourner vers un système de BBCode ? C'est plus la tendance actuelle il me semble...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je ne vois pas en quoi ton post à rapport à ma citation...

    A quelle raison souhaites-tu laisser les utilisateurs utiliser du HTML?

    S'il s'agit de faire de la mise en forme pour leurs textes, je rejoins Jml94 sans hésitation.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  6. #6
    Membre habitué Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par Deallyra
    Je ne vois pas en quoi ton post à rapport à ma citation...
    J'ai du mal comprendre, je pensais que tu disais que si je voulais un strip_tags() amélioré je devrais le coder intégralement car à ta connaissance je ne trouverais rien de déjà entamé... Ce n'est pas ce que tu as voulu dire ?

    Citation Envoyé par Deallyra
    A quelle raison souhaites-tu laisser les utilisateurs utiliser du HTML?

    S'il s'agit de faire de la mise en forme pour leurs textes, je rejoins Jml94 sans hésitation.
    Citation Envoyé par jml94
    Autoriser le HTML pour les entrées utilisateur ne se fait quasiment plus, sûrement à cause des problèmes de sécurité.
    Pourquoi ne pas plutôt te tourner vers un système de BBCode ?
    J'utilise BBcode pour certaines choses mais là j'ai besoin de nettoyer du HTML retourné par FCKeditor et par XML. Enfin bref je cherche depuis hier sans succès, je vais commencer à me le faire, ce n'est pas gagné vue le nombre de balise HTML et attributs à prendre en compte.

  7. #7
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Je dirais plutôt que le html dans les commentaires revient en force depuis quelques temps. Depuis l'avènement des blogs surtout. Même chose pour la syntaxe wiki. D'après moi, Les bbcodes sont sur le déclin.

    Perso, j'utilise tidy (http://tidy.sourceforge.net/) pour dégrossir et normaliser les données html en plus de DOM pour autoriser explicitement ce que je veux garder. Je préfère cette méthode plutôt que les solutions à base de HTML Purifier et compagnie. Il est très fortement déconseillé d'utiliser strip_tags(). Une page intéressante par l'auteur de HTML Purifier qui compare certaines méthodes: http://htmlpurifier.org/comparison.html (en anglais)

  8. #8
    Membre habitué Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Points : 134
    Points
    134
    Par défaut
    Merci pour ta réponse

    J'ai testé les scripts concurrents de HTML purifier, ce n'est pas trop ça.

    Citation Envoyé par goodpz
    en plus de DOM pour autoriser explicitement ce que je veux garder
    Tu parles de la classe DOMDocument de php5 ? Si oui mince je n'avais pas vue qu'on pouvait l'utiliser pour garder uniquement ce qu'on veux, je vais relire les méthodes de DOM pour voir de quoi tu parles...

    Tidy j'ai testé hier, j'ai cru pendant un moment avoir enfin trouvé ce qu'il me fallait mais apparemment non car il réagit bizarrement.
    Par exemple si il parse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>alert('Du JS en boîte');</script>
    Il me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    <script>alert('Du JS en boîte');</script>
    </script>
    Egalement <img src="" /> Tidy vire le / soit <img src="">

    Tidy te fait la même chose ? Ou il y a une config qui m'est passé à coté ?

    Citation Envoyé par goodpz
    Il est très fortement déconseillé d'utiliser strip_tags()
    Par rapport à quoi ?

    Citation Envoyé par goodpz
    D'après moi, Les bbcodes sont sur le déclin.
    Je ne sais pas si elle sont sur le déclin mais pour moi le HTML est déjà un très bon langage de structuration, le BBcode est bon que pour se limiter à un strict minimum.

  9. #9
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    J'utilise la dernière version de tidy disponible dans leur repository CVS. On peut configurer pas mal de chose, tout est expliqué sur la page de tidy sur sourceforge. Tidy seule ne fait pas tout le boulot (ce n'est pas son rôle). Ensuite je parcours le DOM pour autoriser explicitement ce que je veux garder.

    strip_tags() n'est pas assez sûr si utilisé comme seule méthode de filtrage. Des "tags" interdits peuvent se retrouver dans l'output si un tag parent est autorisé. Il y a également des techniques pour induire en erreur strp_tags(). Pas mal de sites internet décrivent ces problèmes.

  10. #10
    Membre habitué Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Points : 134
    Points
    134
    Par défaut
    Ok merci pour les précisions.

    Bon je vais me faire ça à coup de regex, y a plus qu'à trouver les bonnes règles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. composant builder4 pour afficher du code html
    Par BranRuz dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/09/2002, 11h35
  4. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo