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 :

htmlentities + utf8


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut htmlentities + utf8
    Bonjour à tous,

    J'ai pas mal bûché aujourd'hui sur les cours de sécurité php avant de me mettre à l'ajax.

    Outre le fait que je crois qu'il est totalement inutile de faire un filtre javascript pour les données envoyée au serveur (amis pirates), je me pose une question à laquelle je n'ai toujours pas réponse malgré les nombreux googling.

    Ci après :

    Mon serveur, mon code, tout est en UTF8. dans ces conditions, htmlentities sert-il encore à quelque chose ?

    en effet :
    Avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www.test.fr/?client=Cyril<script>monscript</script>
    Et dans ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p><?php echo htmlentities($_GET['client'],ENT_COMPAT,UTF-8);?></p>
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cyril<script>monscript</script>
    Ca veut dire quoi ? htmlentities a-t'il rendu inoffensif le script potentiel ou pas du tout ?

    Merci à vous,

    A bientôt,

    LeHibou2

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Regarde la source tu verras que ce n'est plus <script> mais &lt;script&gt; donc du code inoffensif.

    UTF8 n'a rien à voir dans une quelconque sécurité.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Je pense me répondre :

    Si j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    www.test.fr/?client=Cyril<input type="text" AUTOFOCUS onfocus=alert(1)>
    alors le htmlentities affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Cyril<input type="text" AUTOFOCUS onfocus=alert(1)>"
    Sans lui, le code est exécuté.

    Ce que je fais donc, puisque je ne veux pas de signes c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities(strip_tags($bla),ENT_COMPAT,UTF8);
    Avec éventuellement des str_replace en amont.

    On peut me confirmer qu'il n'y a plus de soucis ?

    A bientôt,

    LeHibou

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    htmlentities, comme te l'a expliqué grunk, permet de rendre le code inoffensif, mais permet néanmoins d'afficher tout le texte rentré.

    Si tu utilises "strip_tags" les tags sont supprimés et non pas rendus inoffensifs, donc l'inconvénient est que jamais tu ne pourras les afficher.

    Pour cette raison, on emploi rarement "strip_tags" pour régler des problèmes de sécurité. Les fonctions dédiées pour protéger tes variables à l'affichage sont htmlentities et htmlspecialchars. Et pour la petite histoire on utilise souvent htmlspecialchars, parce que d'une part c'est suffisant au niveau de la sécurité, et d'autre part parce qu' on a pas besoin de spécifier l'encodage avec l'utf-8 (ce qui fait du code un peu moins lourd).

  5. #5
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Merci à vous deux !

    Je n'avais pas vu la réponse de grunk

    Je vais changer mes strip_tags en htmlentities(strip_tags
    Merci encore,


    A bientôt,

    LeHibou2

  6. #6
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    le 3em parametre de htmlentities doit etre un string et je te conseillerais également d'utiliser le mode ENT_QUOTES :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities($txt, ENT_QUOTES, 'UTF-8')

  7. #7
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Bien noté,

    Merci beaucoup !

    A bientôt,

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

Discussions similaires

  1. Migration Oracle 8i WE8DEC => Oracle 9i UTF8
    Par stawen dans le forum Oracle
    Réponses: 3
    Dernier message: 06/01/2005, 10h44
  2. [String] équivalent htmlentities
    Par mousstik dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/12/2004, 14h26
  3. Réponses: 5
    Dernier message: 19/11/2004, 19h16
  4. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57
  5. Réponses: 2
    Dernier message: 23/06/2004, 16h06

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