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

PHP & Base de données Discussion :

Mysql et htmlentities() [Fait] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    Points : 105
    Points
    105
    Par défaut Mysql et htmlentities()
    Une petite question technique : je rentre dans une base de données Mysql des infos tapées par le visiteur. Pour ensuite afficher ces données, j'utilise la fonction htmlentities(). Mais qu'est-ce qui est le plus judicieux : utiliser cette fonction AVANT d'insérer les données dans la table, ou APRES au moment d'afficher ? Parce que si je le fais deux fois, évidemment, le résultat est décevant...

    Je ne vois pas de différence significative, mais j'imagine que d'autres se sont intéressé(e)s à la questions ; je ne pense pas avoir fait le tour du problème, il y a sûrement des points techniques qui m'échappent.. ou pas ?

    Thrystan.

    Participez au projet d'entraide Linux : http://parrains.linux.free.fr

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je dirai qu'il faut utiliser lors de l'insertion mysql_real_escape_string() qui va éviter les injections SQL (et en général les problèmes de quotes).
    Lors de l'affichage par contre tu utilises htmlentities() pour ne pas avoir de problèmes avec les caractères spéciaux html

  3. #3
    Membre régulier Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    Points : 105
    Points
    105
    Par défaut
    Ok merci.
    Il me vient une autre question du coup : je vais utiliser mysql_real_escape_string() pour protéger ma base de données, mais si j'utilise déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $values = strip_tags(substr($_POST['values'],x,y));
    Je contrôle donc déjà ce que tapent les visiteurs. Est-il alors nécessaire (complémentaire ?) d'utiliser mysql_real_escape_string() ? Est-ce que ça remplace strip_tags() ?

    Thrystan.

    Participez au projet d'entraide Linux : http://parrains.linux.free.fr

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    C'est complémentaire, strip_tags() va te retirer les balises html tandis que mysql va éviter les injections SQL. Pour ca il va "échapper" toutes les quotes lors de l'insertion dans la base de données
    http://securite.developpez.com/faq/?..._sql_injection

  5. #5
    Membre régulier Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    Points : 105
    Points
    105
    Par défaut
    Je dois donc utiliser ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $values = mysql_real_escape_string(strip_tags(substr($_POST['values'],x,y)));
    Deuxièmement, avec ce que je viens de lire sur le lien :
    Le code ne contient jamais de données sensibles
    Les mots de passe, clef de chiffrement, chaîne de connexion, identifiant de compte, etc… ne doivent pas être codés en dur.
    Comment je fais pour me connecter à ma base Mysql sans taper clairement dans le code php mon mot de passe ?

    Thrystan.

    Participez au projet d'entraide Linux : http://parrains.linux.free.fr

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Thrystan
    Deuxièmement, avec ce que je viens de lire sur le lien :Comment je fais pour me connecter à ma base Mysql sans taper clairement dans le code php mon mot de passe ?
    D'après ce que j'ai pu lire sur le forum depuis que j'y suis, tu as un risque de sécurité si tu mets tes logins/mdp en dur dans tes scripts. En effet, le php est interprété par php lancé lui meme par Apache et tu pourrais te retrouver dans un cas ou ton script n'est pas interprété correctement et que le script php est envoyé comme du html au client (il aurait donc ton code).
    La solution qui était proposée c'était de mettre tes login/mdp dans un fichier externe, lui meme non présent dans le répertoire www d'Apache.
    Maintenant je n'en sais pas beaucoup plus désolé

  7. #7
    Membre régulier Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par koopajah
    La solution qui était proposée c'était de mettre tes login/mdp dans un fichier externe, lui meme non présent dans le répertoire www d'Apache.
    Oui, mais je le mets où du coup ? Parce que si on peut accéder au fichier, le problème est le même, voire pire... D'autant que je crée un site perso sur Free, et je ne sais pas où je pourrais "cacher" un fichier.

    Sinon pour la ligne de code, t'en penses quoi ?

    Thrystan.

    Participez au projet d'entraide Linux : http://parrains.linux.free.fr

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    ta ligne me semble correcte effectivement.

    Pour l'endroit où le mettre je te dis ce que j'ai retenu de mes lectures mais je ne me rappelle pas exactement les solutions proposées, il faudrait que tu recherches un peu dans le forum il doit y avoir des posts qui en parlent.

  9. #9
    Membre régulier Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    Points : 105
    Points
    105
    Par défaut
    Ok, merci pour tout.

    Thrystan.

    Participez au projet d'entraide Linux : http://parrains.linux.free.fr

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par Thrystan
    Oui, mais je le mets où du coup ? Parce que si on peut accéder au fichier, le problème est le même, voire pire... D'autant que je crée un site perso sur Free, et je ne sais pas où je pourrais "cacher" un fichier.
    Là est tout le problème avec les hébergeurs mutualisés : ils ne vous permettent généralement pas de placer des fichiers en dehors de la partie visible par Apache (au pire ça se gère avec un htaccess). C'est à eux de gérer les problèmes de sécurité au niveau du serveur, notamment en ce qui concerne les manipulations de fichier chez autrui mais PHP est prévu pour donner la possibilité de ne pas le permettre (directive open_basedir - voir le safe_mode mais il sera abandonné lors du passage à PHP 6 et n'est pas réellement une solution).

    Je voudrais revenir sur la sécurité, dont les bases sont abordées dans le tutoriel : Developpement web : Généralités sur la sécurité. Après lecture, vous aurez une idée beaucoup plus précise sur ce qu'il faut éviter et les solutions.

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

Discussions similaires

  1. Fonction équivalente à htmlentities sous MySQL
    Par navis84 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/05/2006, 13h41
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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