Partage
  • Partager sur Facebook
  • Partager sur Twitter

htmlspecialchars

pour base de données?

Sujet résolu
    13 novembre 2010 à 12:14:06

    Bonjour,

    je suis débutant et me pose quelques questions concernant la sécurité de mon site.

    A ce que j'ai compris dans les cours de matéo htmlspecialchar sert à éviter une injection de code html ou java via un utilisateur mal intentionné en remplissant un formulaire.

    Ma question est la suivante:

    Si ce formulaire sert a rentrer des données dans ma base de donné et ces éléments inséré dans dans ma base de données sont ensuite affiché dans certaine page de mon site.
    Dois-je dans ce cas utiliser htmlspecialchar devant les $_get ou $_post lors de l'insertion des champs du formulaire dans ma base de donnée?
    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2010 à 12:18:21

      Il faut utiliser htmlspecialchars lors de l'affichage d'une variable et non lors de son enregistrement.
      • Partager sur Facebook
      • Partager sur Twitter
      Mon Twitter : @Amatewasu
        13 novembre 2010 à 17:14:18

        ok merci pour la réponse.

        Donc sur chaque variable affichée prevenant du remplissage d'un formulaire il faut mettre specialchars c'est ca?
        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2010 à 17:16:54

          Bah non. Il vient de te dire qu'il faut le faire lorsque tu affiches les données à l'écran, pas quand tu les insères dans ta base de données.
          • Partager sur Facebook
          • Partager sur Twitter
            13 novembre 2010 à 17:20:32

            OUi c'est ce que je disait lol je me suis peut-etre mal exprimé:

            Je reformule ma phrase

            Donc sur chaque variable affichées provenant du remplissage d'un formulaire il faut mettre specialchars "avant de l'afficher" c'est ca?
            • Partager sur Facebook
            • Partager sur Twitter
              13 novembre 2010 à 17:22:45

              Oui, c'est exactement ça.
              • Partager sur Facebook
              • Partager sur Twitter
                13 novembre 2010 à 17:33:52

                Donc j'ais besoin d'une petite précision pour les requetes préparées:

                exemple:
                <?php
                $req = $bdd->prepare('SELECT * FROM forum_sujets WHERE auteur= ? ORDER BY date_derniere_reponse DESC LIMIT ?, ?');
                $req->bindValue(1, $_SESSION['pseudo'], PDO::PARAM_STR);
                $req->bindValue(2, $lim_aff_min, PDO::PARAM_INT);
                $req->bindValue(3, $lim_aff_max, PDO::PARAM_INT);
                $req->execute() or die(print_r($req->errorInfo()));
                
                while ($data = $req->fetch()) 
                {
                  echo $data['id'];
                  echo $data['titre'];
                }
                ?>
                


                Il faut ecrire htmlspecialchars a chaque fois comme ca?
                <?php
                $req = $bdd->prepare('SELECT * FROM forum_sujets WHERE auteur= ? ORDER BY date_derniere_reponse DESC LIMIT ?, ?');
                $req->bindValue(1, $_SESSION['pseudo'], PDO::PARAM_STR);
                $req->bindValue(2, $lim_aff_min, PDO::PARAM_INT);
                $req->bindValue(3, $lim_aff_max, PDO::PARAM_INT);
                $req->execute() or die(print_r($req->errorInfo()));
                
                while ($data = $req->fetch()) 
                {
                  echo htmlspecialchars ($data['id']);
                  echo htmlspecialchars ($data['titre']);
                }
                ?>
                


                Ou bien on peut le faire une fois pour toute les variable comme ca?
                <?php
                $req = $bdd->prepare('SELECT * FROM forum_sujets WHERE auteur= ? ORDER BY date_derniere_reponse DESC LIMIT ?, ?');
                $req->bindValue(1, $_SESSION['pseudo'], PDO::PARAM_STR);
                $req->bindValue(2, $lim_aff_min, PDO::PARAM_INT);
                $req->bindValue(3, $lim_aff_max, PDO::PARAM_INT);
                $req->execute() or die(print_r($req->errorInfo()));
                
                while (htmlspecialchars ($data) = $req->fetch()) 
                {
                  echo $data['id'];
                  echo $data['titre'];
                }
                ?>
                

                • Partager sur Facebook
                • Partager sur Twitter
                  13 novembre 2010 à 18:01:01

                  - oui à chaque fois
                  - comme ça me gonfle, je mets function h($x) { return htmlspecialchars($s); }
                  - comme $data['id'] est un entier, c'est pas la peine...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2010 à 18:08:58

                    Ok merci pour les réponses, bonne idée la fonction.... ;)

                    Oui pour l'id je sais c'était juste l'exemple, il était mal choisi j'avoue!


                    • Partager sur Facebook
                    • Partager sur Twitter

                    htmlspecialchars

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown