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 :

Bonne pratique htmlspecialchars ou pas htmlspecialchars en PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut Bonne pratique htmlspecialchars ou pas htmlspecialchars en PDO
    Bonjour à tous et à toutes.
    J'ai une question idiote à poser.
    Je passe mes requêtes SQL en PDO.

    Est ce qu'il faut mettre htmlspecialchars à la place de mysql_real_escape_string quand on insert ou update dans une table ou c'est plus la peine.
    depuis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $pseudo = $_POST['pseudo'];
    		$message = $_POST['message'];
    		 // puis on entre les données en base de données :
    		$insertion = $bdd->prepare('INSERT INTO messages (auteur, message) VALUES(:aut,:mess)');
    		$insertion->bindValue('aut', $pseudo, PDO::PARAM_STR);
    		$insertion->bindValue('mess', $message, PDO::PARAM_STR);
    		try {
    				$insertion->execute();
    			}
    		catch (PDOException $e)
    			{
    			   echo 'Error : ' . $e->getMessage();
    			   die();
    			}
    		$insertion->closeCursor();
    Merci de vos réponses car les " dans la table m'ennuies.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    La fonction htmlspecialchars et sa cousine htmlentities servent à encoder des caractères HTML (notamment pour protéger des injections XSS) Donc utiliser ça pour l'insertion en base de données, c'est comme mettre des chaussettes pour éviter d'avoir froid à la gorge.

    Pour protéger des données pour l'insertion en base de données avec PDO, il faut utiliser les requêtes préparées et passer les paramètres à l'exécution par bindParam, bindValue ou directement dans execute.
    Donc ton exemple est très bien
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Merci pour ta réponse.
    Si je comprend bien, si je fait toujours mes insert comme l'exemple ce n'est pas la peine de protéger les variable avec htmlspecialchars

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    oui c'est ça, bindValue s'occupe de protéger la valeur pour l'utiliser dans la requête

  5. #5
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Merci Mathieu

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    En revanche ça dispense pas de d'utiliser htmlspecialchars ou htmlentities à l'affichage.

    C'est pas lié à PDO, c'est juste que sur un insert de BDD on protège les injections SQL , mais on garde les données le plus brute possible pour faciliter d'éventuels traitement dessus. La protection cliente s'effectue à l'affichage pas à l'enregistrement.

    La plus part des moteurs de template un peu sérieux le font par défaut d'ailleurs.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Bonnes pratiques de protections individuelles
    Par Community Management dans le forum Sécurité
    Réponses: 22
    Dernier message: 05/04/2013, 11h47
  2. [Ergonomie] Bonnes pratiques - Frames ou pas frames
    Par Wisefool dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 31/01/2007, 17h37
  3. [Bonne pratique]Stratégie d'allocation
    Par jowo dans le forum C
    Réponses: 1
    Dernier message: 05/10/2005, 14h47
  4. [FOREIGN K] Valeur de champ = nom de table. Bonne pratique ?
    Par Seb des Monts dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/05/2005, 10h56

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