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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    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.

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    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 éclairé Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    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.

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    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 éclairé Avatar de Thrystan
    Inscrit en
    Avril 2003
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 346
    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.

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    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é

+ 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