Partage
  • Partager sur Facebook
  • Partager sur Twitter

est ce une bonne façon de vérifiation que les $_GET existent?

    4 avril 2006 à 19:50:05

    Bonjour, je teste cette option pour la vérification des variables $_GET

    <?php
    ////Connection bdd
    $id=htmlspecialchars($_GET['id']);
    $url=htmlspecialchars($_GET['url']);

    $reponse=mysql_query(" SELECT * FROM table WHERE id='$id' AND url='$url' ");
    if(!$donnees=mysql_fetch_array($reponse))
    {
    echo'<P>Erreur</p>';
    }
    else
    {
    ///Execution du script
    }
    ?>

    Ça me donne de bons résultats mais j'aimerais des avis autres que le mien... :p:p:p
    • Partager sur Facebook
    • Partager sur Twitter
      4 avril 2006 à 19:55:41

      salut

      // verification et protection
      if(isset($_GET['id']) && !empty($_GET['id']))
      $id = htmlentities(addslashes(trim($_GET['id'])), ENT_QUOTES);
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        4 avril 2006 à 19:56:39

        Voici la fonction que j'utilise:


        define('Magic_Quotes', (bool)get_magic_quotes_gpc());
        function Protect($var, $magic = true){
                if(is_array($var))
                        array_walk($var, Array_Protect, $magic);
                else{
                        if(Magic_Quotes && $magic)
                                $var = stripslashes($var);
                        $varmysql_real_escape_string(nl2br(htmlentities($var, ENT_NOQUOTES)));
                }
                return $var;
        }

        function Array_Protect(&$value, $key, $magic){
                if(is_array($value))
                        array_walk($value, Array_Protect, $magic);
                else
                        $value = Protect($value, $magic);
        }

        Voila ;) Si la variable testée est susceptible d'avoir été passé par un magicquote faites Protect($var); sinon faites Protect($var, false) (ce qui est légèrement plus rapide ;)
        • Partager sur Facebook
        • Partager sur Twitter
          4 avril 2006 à 20:11:38

          Citation : Makkhdyn

          Voici la fonction que j'utilise:


          define('Magic_Quotes', (bool)get_magic_quotes_gpc());
          function Protect($var, $magic = true){
                  if(is_array($var))
                          array_walk($var, Array_Protect, $magic);
                  else{
                          if(Magic_Quotes && $magic)
                                  $var = stripslashes($var);
                          $varmysql_real_escape_string(nl2br(htmlentities($var, ENT_NOQUOTES)));
                  }
                  return $var;
          }

          function Array_Protect(&$value, $key, $magic){
                  if(is_array($value))
                          array_walk($value, Array_Protect, $magic);
                  else
                          $value = Protect($value, $magic);
          }


          Voila ;) Si la variable testée est susceptible d'avoir été passé par un magicquote faites Protect($var); sinon faites Protect($var, false) (ce qui est légèrement plus rapide ;)



          Bon, à priori, protéger par un if(! etc...) c'est pas assez...
          Et il faut mettre cette fonction à chaque vérification? pour chaque variable qu'il faut tester?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            4 avril 2006 à 20:51:39

            Oui, ou alors si tu met tout dans un array et ça va tout vérifier seul ;)
            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2006 à 18:16:11

              Boujour !!
              Donc je fais un truc comme ça, si j'ai bien compris... :p
              $var=array($_GET['id'], $_GET['url'], $_POST['nom'],$_POST['prenom'], $_POST['message']);
              define('Magic_Quotes', (bool)get_magic_quotes_gpc());
              function Protect($var, $magic = true){
                      if(is_array($var))
                              array_walk($var, Array_Protect, $magic);
                      else{
                              if(Magic_Quotes && $magic)
                                      $var = stripslashes($var);
                              $varmysql_real_escape_string(nl2br(htmlspecialchars($var, ENT_NOQUOTES)));
                      }
                      return $var;
              }

              function Array_Protect(&$value, $key, $magic){
                      if(is_array($value))
                              array_walk($value, Array_Protect, $magic);
                      else
                              $value = Protect($value, $magic);
              }

              et toutes ces variables superglobales vont être protégées contre toute injection sql par exemple?
              En tout cas ça marche, pas de message d'erreur... par contre, à la place de htmlentities j'ai mis htmlspecialchars...

              Pour récapituler, il faut juste protéger les variables qui se baladent soit dans l'url soit via formulaire, non? Les autres non? je veux dire, celles que l'on récupère avec un requête dans un script?
              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2006 à 20:34:16

                array pawa pour la vérification, j'ai pas mes codes sources pour montrer un exemple mais je sais que c'est sécurisé à 100%
                • Partager sur Facebook
                • Partager sur Twitter
                  5 avril 2006 à 23:03:35

                  Citation : Pierrera

                  array pawa pour la vérification, j'ai pas mes codes sources pour montrer un exemple mais je sais que c'est sécurisé à 100%



                  Donc si j'ai un code équivalent à ceci:

                  $var=array($id =>$_GET['id'],
                  $url => $_GET['url'],
                  $nom => $_POST['nom'],
                  $prenom => $_POST['prenom'],
                  $message => $_POST['message']);
                  define('Magic_Quotes', (bool)get_magic_quotes_gpc());
                  function Protect($var, $magic = true){
                          if(is_array($var))
                                  array_walk($var, Array_Protect, $magic);
                          else{
                                  if(Magic_Quotes && $magic)
                                          $var = stripslashes($var);
                                  $varmysql_real_escape_string(nl2br(htmlspecialchars($var, ENT_NOQUOTES)));
                          }
                          return $var;
                  }

                  function Array_Protect(&$value, $key, $magic){
                          if(is_array($value))
                                  array_walk($value, Array_Protect, $magic);
                          else
                                  $value = Protect($value, $magic);
                  }
                  if(empty($id) && empty($url) && empty($nom) && empty($prenom) && empty($message))
                  {
                  echo'Erreur';
                  }
                  else
                  {
                  echo'les variables sont bonnes';
                  }

                  C'est à peu près comme ça qu'on peut concevoir la chose correctement?

                  [edit] au fait, mais ça msécuriserait donc aussi les $_SESSION[] alors...[/edit]
                  • Partager sur Facebook
                  • Partager sur Twitter

                  est ce une bonne façon de vérifiation que les $_GET existent?

                  × 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