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 :

[Sécurité] Aide htmlentities|htmlspecialchars|addslashes|stripslashes [Tutoriel]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut [Sécurité] Aide htmlentities|htmlspecialchars|addslashes|stripslashes
    Alors j'ai bien lu l'aide officiel du site PHP.net !

    Cependant j'ai besoin d'utilisateur ayant pratiqué !

    Lorsque je fais cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trim(htmlentities(addslashes($_POST['message']))))
    Et que le message est:
    l'utilisateur blabla...
    il me l'envois avec: \\\'

    Donc j'ai ajouter la fonction stripslashes sur le message, il me retourne: \'
    Il y a du mieux mais ce n'est pas ca !

    Comment je peux faire pour sécuriser tout en ayant un message correcte au final ?
    Je suis vraiment coincé et tourne en rond, si quelque pouvais m'aider à ce sujet !

    Encore une chose...
    je n'ai pas compris la différence entre htmlentities et htmlspecialchars !
    Laquel vaut-il mieux utiliser ?

    http://fr2.php.net/manual/fr/functio...ecialchars.php
    http://fr2.php.net/manual/fr/function.htmlentities.php

    Merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Mais tu veux faire quoi avec tout ca?
    Si c est pour mettre dans une base, tu n as pas besoin du htmlentities. Seul le addslashes est utile.
    Si tu veux absolument mettre tes caracteres speciaux au format html, tu n as alors pas besoin d utiliser addslashes. En ecrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities($val, ENT_QUOTES)
    ca echappe automatiquement les simples quotes. Du coup, le addslashes ne sert plus a rien.
    Apres, pour la difference entre htmlentities et htmlspecialchars, je sais pas du tout...
    La vie n'est qu'une succession d'éternels recommencements

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    quel que soit le cas, htmlentites et stripslashes ne servent à rien, déjà.

    À l'insertion il faut faire un addslashes (si celui-ci n'a pas été déjà fait automatiquement à cause de cette directive stupide magic_quotes_gpc)
    Et quand on affiche les données, il faut faire htmlspecialchars (à défaut de mieux, un parser bbcode ou autre).
    Boost ftw

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Citation Envoyé par loufoque
    Et quand on affiche les données, il faut faire htmlspecialchars (à défaut de mieux, un parser bbcode ou autre).
    C est pas obligatoire ca, si?
    Je le fais jamais... C est grave docteur?
    La vie n'est qu'une succession d'éternels recommencements

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Je le fais jamais... C est grave docteur?
    Oui, c'est très grave.
    Rien ne garantit l'intégrité de ton document, on pourra très bien utiliser du cross-site scripting etc.

    ça parait tout de même évident que quand tu créés un document d'un type particulier (en php on fait généralement de l'html) il faut encoder les données que l'on y insère d'une façon particulière.
    Boost ftw

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Citation Envoyé par loufoque
    ça parait tout de même évident que quand tu créés un document d'un type particulier (en php on fait généralement de l'html) il faut encoder les données que l'on y insère d'une façon particulière.
    Ben, c est a dire que quand je cree un document html tout simple, je n encode jamais ce que j ecris. Mes accents restent des accents, et je m amuse pas a traduire tout ca avec des é ...
    Parce qu admettons que tu passes par htmlspecialchars pour encoder tes donnees. Tres bien... T es dans un formulaire qui affiche des donnees a modifier, donc ces donnees sont encodees, avec des é et autre. On est d accord?
    Maintenant, tu modifies ces donnees, et tu enregistres le tout dans la base => dans ta base, il y a des é ..., et donc tu t en sors plus...
    Non?
    La vie n'est qu'une succession d'éternels recommencements

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Mes accents restent des accents, et je m amuse pas a traduire tout ca avec des é ...
    Encore heureux, ce serait totalement stupide de faire ça.

    T es dans un formulaire qui affiche des donnees a modifier, donc ces donnees sont encodees, avec des é et autre. On est d accord?
    Non.
    htmlspecialchars convertit <, >, & et accessoirement " suivant l'option.
    Ce qui est indispensable, étant donné que ces caractères sont reservés...

    Maintenant, tu modifies ces donnees, et tu enregistres le tout dans la base => dans ta base, il y a des &eacute; ..., et donc tu t en sors plus...
    Non?
    Bien sûr que non.
    Si tu as <input type="text" value="h&eacute;ho"> le navigateur enverra "hého" dans le charset défini par l'attribut accept-charset de <form>. Il n'enverra pas du tout des entités à la con (faut pas déconner non plus).

    Mais de toutes façons remplacer é par &eacute; n'a aucun intérêt...
    Si du moins on a les 80 de QI nécessaires pour pouvoir gérer correctement les charsets.
    Boost ftw

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par loufoque
    Si du moins on a les 80 de QI nécessaires pour pouvoir gérer correctement les charsets
    merci

Discussions similaires

  1. addslashes / stripslashes en javascript
    Par the_jeck dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 24/03/2011, 14h44
  2. htmlspecialchars, addslashes, htmlentities et autres
    Par senacle dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2008, 21h25
  3. [MySQL] addslashes() stripslashes() et "" ''
    Par cotede2 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 01/05/2007, 00h18
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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