addslashes, mysql_real_escape_string, htmlentities ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ZelkiN, 28 Janvier 2011.

?

quels méthode utilisé vous pour traiter vos données d'insertions ?

  1. Addslashes

    0 vote(s)
    0.0%
  2. Mysql_real_escape_string

    0 vote(s)
    0.0%
  3. Htmlentities

    0 vote(s)
    0.0%
  4. Autres...

    0 vote(s)
    0.0%
  1. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    458
    J'aime reçus:
    0
    Bonjour à vous, dans le cadre d'une insertion dans une base de données, quels méthode utilisé vous pour traiter vos données d'insertions ?

    Si vous en avez d'autre, merci de me le signaler et de me donner leur avantage, pareils si elles sont couplés ;)
     
  2. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Je n'utilise pas :
    * addslashes : certains caractères pouvant être dangereux ne sont pas échappés avec cette fonction.
    * htmlentities : la pire des fonctions !! Elle ne sert strictement à rien mise à part pourrir les données de la base.

    Donc, résultat, mysql_real_escape_string suffit amplement.
     
  3. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    458
    J'aime reçus:
    0
    OK, mais par exemple je rentre une valeur
    dans un input de formulaire, quand je vais afficher cette variable en value" " ca va me fermer le formulaire et m'afficher ce que je veux, comment fais tu pour contrer les effets de quote ?
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 168
    J'aime reçus:
    345
    A l'enregistrement en DB, comme Blount : mysql_real_escape_string()
    A l'affichage en value="" => htmlentities()
     
  5. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Attention, je n'ai jamais dit qu'il ne fallait pas utiliser "htmlentities", la question du sondage concerne l'insertion dans la base de données, et non pas l'affichage des données.

    En effet, il faut toujours protéger les chaînes de caractères lors de l'affichage. Pour cela, j'utilise la fonction "htmlspecialchars".

    Mais lors de l'insertion en base de données, aucun traitement de ce genre ne doit être fait.
     
  6. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    d'un coté optimisation, mieux vaut faire le htmlentities (ou special char) une fois a l'insertion que des milliers de fois (voir des millions) à l'affichage pendant des jours, des mois, des années...

    Aprés chacun sa philosophie ...
     
  7. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    458
    J'aime reçus:
    0
    Donc forummp3 tu utiliserais un truc comme ca : htmlentities(mysql_real_escape_string($variable_insertion); ?
     
  8. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Sauf que là, ce n'est plus le même sujet.
    Ce dont tu parles, c'est un système de cache.

    Une base de données n'est pas une page HTML.
    À tout moment d'un projet, il peut peut-être nécessaire de créer une application exploitant la base de données sans même afficher de l'HTML. À ce moment là, tu te retrouveras à traiter des données erronées.

    Et j'ai un gros doute sur les impacts sur la performance de l'utilisation de la fonction à chaque affichage.
     
  9. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    oui, enfin, là sa question est en rapport avec php, donc j'imagine que c'est pour un site, donc du html.
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 168
    J'aime reçus:
    345
    Si c'est pour une application HTML ou pas, enregistrer les entités en HTML en BDD n'est pas une bonne technique.
    C'est à l'affichage qu'il faut faire le htmlentities/htmlspecialchars.
     
  11. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    458
    J'aime reçus:
    0
    Donc je récapitule ce qui vous semble le mieux et le plus adéquate ?

    INSERTION : mysql_real_escape_string();
    AFFICHAGE : htmlentities/htmlspecialchars
     
  12. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Tu sais qu'il n'y a pas que PHP dans la vie. Il ne parle pas d'une application tournant entièrement avec PHP. Et si même était le cas, il faut toujours voir à long terme.

    Java, Python, Perl, C, C++, tout autant de langage utilisable pour concevoir des applications web.
    Et tout autant de langage pouvant utiliser simultanément la base de données, peu importe ce qu'il est fait des données.

    Après, vous faites ce que vous voulez, mais bon, j'espère ne jamais à devoir repasser derrière vous …
     
  13. 1000colocations
    1000colocations Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    1
    J'aime reçus:
    0
    Bonjour,
    Je suis désolé de déterrer un vieux sujet comme celui-ci mais je ne trouve pas de réponse satisfaisante.

    Mon problème est lié aux guillemets et à mysql.
    J'utilise
    Code:
    mysql_real_escape_string
    pour faire mes inserts dans ma DB. Et lorsque j'insère du texte avec des " il me stock des "
    Déjà est-ce normal ?

    C'est à l'affichage que j'ai ensuite des soucis. Pour éviter les failles XSS, j'utilise htmlentities.
    Sauf que htmlentities sur du texte contenant des " bah ça ne fonctionne pas très bien :)

    Pour résoudre ce problème je peux faire ça :
    Code:
    htmlentities(html_entity_decode("mon texte avec des ""))
    Mais c'est crade non ? Ce sont deux fonctions inverses.

    Est-ce que quelqu'un peut me dire où se situe mon problème ?
    Merci.
     
  14. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    788
    J'aime reçus:
    0
    c'est avec addslashes que tu règles le problème des ' pour mysql, pas une fonction qui a un autre usage.
     
  15. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 168
    J'aime reçus:
    345
  16. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    788
    J'aime reçus:
    0
    oups, j'ai lu trop vite :
    "mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un anti-slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a. "

    donc "j'insère du texte avec des " il me stock des " " est faux, s'il y a des """, c'est que ce n'est pas mysql_real_escape_string qui a été utilisé.
     
  17. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Il ne faut pas utiliser htmlentities pour l'affichage mais htmlspecialchars.
    Il faut revoir ta façon d'insérer en base de données. À mon avis, il n'y a pas que mysql_real_escape_string d'utilisé, car ce dernier n'applique pas de conversion de chaîne (ex: ' en ") mais de la protection de chaîne.
     
Chargement...
Similar Threads - addslashes mysql_real_escape_string htmlentities Forum Date
[MySQL] addslashes et stripslashes Développement d'un site Web ou d'une appli mobile 9 Août 2011
Addslashes et appostrophes Développement d'un site Web ou d'une appli mobile 14 Mai 2009
Complètement largué ! addslashes/ htmlentities - S.O.S Développement d'un site Web ou d'une appli mobile 9 Décembre 2005
Aide htmlentities|htmlspecialchars|addslashes|stripslas hes Développement d'un site Web ou d'une appli mobile 23 Septembre 2005
question concernant mysql_real_escape_string insertion dans une table Développement d'un site Web ou d'une appli mobile 21 Octobre 2009
mysql_real_escape_string() suffisant contre les injections SQL? Développement d'un site Web ou d'une appli mobile 16 Mai 2009
Enregistrement en bd et mysql_real_escape_string() Développement d'un site Web ou d'une appli mobile 12 Septembre 2008
Sécurité , injection sql : mysql_real_escape_string Développement d'un site Web ou d'une appli mobile 8 Juin 2006