Partage
  • Partager sur Facebook
  • Partager sur Twitter

stripslashes()

    25 novembre 2005 à 17:13:02

    Hello tout le monde!

    Alors voila, pour sécuriser mes formulaires, je les récupère comme ceci:


    $article = addslashes($_POST['article']);


    Premiere question: Est ce suffisant pour les sécuriser?

    Ensuite, je les enregistre dans ma base de données, et pour les récupérer, je fais comme tel:


    $contenu = mysql_result($resultat,'.$num_article.',"contenu");


    Comment faire un stripslashes sur $contenu?

    Je suis obligé de m'y prendre en deux lignes?

    Merci d'avance pour votre aide :D
    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2005 à 17:21:37

      Salut!

      Pour ta première question, je te conseille d'ajouter un htmlentities pour sécuriser mieux. Les addslashes sont alors pas vraiment nécessaires
      <?php
      $var = htmlentities($_POST['var']);
      ?>


      Pour la 2eme question, tu peux faire ainsi:
      <?php

      $contenu = stripslashes(mysql_result($resultat,'.$num_article.',"contenu"));
      ?>

      ;)
      a++
      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2005 à 17:26:18

        Salut,

        Malheureusement le stripslashes() seul ne suffit pas, tu dois aussi veiller à ce que le visiteur n'entre pas de code html et javascript malveillant. Pour celà, tu peux utiliser la fonction htmlentities()

        Pour ta deuxième question tu peux tout bêtement faire normalement car mysql_result renvoie une chaine.
        $contenu = stripslashes(mysql_result($resultat,'.$num_article.',"contenu"));


        Voila
        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2005 à 17:26:43

          Le probleme, c'est que j'ai fait un system de BBcode, et a l'insertion dans la bdd, il ne faut pas que j'ai de caractères convertit en html!

          Car pour afficher le contenu de la bdd, mon system affiche les caractères en entité html!

          Comment y remédier? Et si cela est possible, comment faire l'inverse que htmlentities? Et comment sécuriser le bazard pour qu'il fonctionne tout de meme!

          (vraiment sympas ce forum) :lol:
          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2005 à 17:29:44

            Tu as deux solutions:

            - Soit alors tu convertis tous les caractères "dangereux"
            Donc tu transformes <, >, &, etc.

            - Soit dans ton script du bbccode tu fais l'operation inverse et tu met les entites html.
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2005 à 17:32:20

              Citation : zim

              Et si cela est possible, comment faire l'inverse que htmlentities?


              Il existe une fonction qui fait ca:
              <?php

              $var = html_entity_decode($var_en_htmlentities);
              ?>


              a++
              • Partager sur Facebook
              • Partager sur Twitter
                25 novembre 2005 à 17:33:06

                Et l'opération inverse, je la fais comment?

                Edit: merci, je vais essayer! ;)

                Edit Bis:

                Donc:

                Insertion des données sql

                $article = htmlentities($_POST['article'], ENT_QUOTES); //convertion en entité html, +ent quotes
                //insertion dans la bdd


                Récupération et affichage:


                //requete sql pour récup les donénes
                $contenu = mysql_result($resultat,'.$num_article.',"contenu");
                //code
                //affichage des données, et convertion avec ma fonction bb code
                <? echo jeunz_code(html_entity_decode($contenu)); ?>


                Et la par exemple si $contenu contient une chaine de ce type dans mysql:

                Introduction de l&#039;article

                Sa m'affiche Introduction de l&#039;article et non pas Introduction de l'article
                • Partager sur Facebook
                • Partager sur Twitter
                  25 novembre 2005 à 17:43:31

                  Si tu veux faire le contraire de htmlentities après, autant ne pas l'utiliser... Et si tu utilise html_entities_decode, donc tes visiteurs pourront entrer du javascript.

                  Moi personnellement je ferai:
                  function convertir($chaine) {
                      $caracteres = array('<', '>', '&');
                      $entites = array('&lt;', '&gt;', '&amp;');
                      return str_replace($caracteres, entites, $chaine);
                  }

                  $article = convertir($_POST['article']);
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 novembre 2005 à 17:46:23

                    Pour le problème, je crois que php version < 5 ne gère pas les accents etc lors du décodage.. :( tant pis..
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 novembre 2005 à 17:48:38

                      1/ Qui vous dit que mon script est destiné au visiteurs? (ce n'est pas le cas)

                      2/ Pourquoi j'utilise htmlentities? Juste pour ne pas faire planter mes insertion sql, a la base j'avais dit que ce n'était pas primordial.

                      3/ Merci a vous deux tout de meme d'avoir pris le temps de m'aider, je viens de régler le probleme en incluant le html entities decode dans ma fonction meme.

                      4/ Si un jour mon script est destiné aux visiteurs, je repenserai le coté sécurité en effet, tu fais bien de me le signaler!

                      Encore merci @ vous!
                      • Partager sur Facebook
                      • Partager sur Twitter

                      stripslashes()

                      × 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