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

Langage PHP Discussion :

Sécurité IS_NUMERIC() suffisante ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut Sécurité IS_NUMERIC() suffisante ?
    Bonjour à toutes et à tous,

    Je viens de me poser une question sur l'un de mes scripts qui est l'une des plus basique^^: est ce qu'il est sécurisé ?

    Voici son contenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    if (!isset($_GET['id']) && !is_numeric($_GET['id'])) {
    exit;
    }
     
    actions en tout genre notament une insertion mysql du type:
    mysql_query("Update membre set id='".$_GET['id']."' ...");
    ?>
    En faite, je voulais savoir si la simple vérification ISSET et IS_NUMERIC suffisait à empêcher les attaques notament injection mysql etc et si ce 'est pas le cas merci de me fournir un exemple

    J'ai toutefois remarqué qu'un id du type 6.5646 passait la sécurité mais je n'ai rien trouvé d'autre de plus affolant.

    PS: Je sais qu'il y a de meilleures protections complémentaires mais si je ne les ai pas mises c'est tout simplement pour tester l'efficacité du IS_NUMERIC.

    Merci et bonne continuation !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Par défaut
    Tu peux faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     if(isset($_GET['id']))
    {
     $id=mysql_real_escape_string($_GET['id']);
     mysql_query("Update membre set id='$id' ...");
    }
    Dans ce cas, peut pas y avoir d'injection, et au pire, si l'id a été trafiqué et qu'il n'est pas numérique, il ne fera pas l'update parce qu'il ne le trouvera pas.

    N'utilise surtout pas is_numeric pour ca.

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 512
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 512
    Par défaut
    salut,
    pour ma part, j'utilise aussi la fonction intval();
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id = intval($_GET['id']);
    echo $id;
    ainsi, si un malin essaye dans l'url ta_page.php?id=toto
    bah au final, si $_GET['id'] n'est pas un entier, il vaudra zero, sinon, il le recupere normalement
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut re
    Bonsoir,

    Merci de vos réponses mais elles ne correspondent pas exactement à mes attentes (Je reconnais que j'ai aussi mal formulé la question^^).

    Je cherche plus particulièrement à trouver des failles pour la fonction IS_NUMERIC et non à sécuriser mes scripts.

    Puisque si des fonctions complémentaires comme mysql_real_escape_string() ont été ajouté, c'est que les fonctions du type IS_NUMERIC n'assurent pas la totalité de la protection et c'est ce problème que je souhaîte soulever:

    - Les limites en sécurité pour cette fonction.

    Merci

    PS: Si vous trouvez une faille merci de donner un exemple ou un type de valeur qui répondrait TRUE alors qu'elle n'est pas numérique.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 198
    Par défaut
    C'est simple, y en a pas. Si ta variable est is_numeric, c'est que c'est une valeur numérique.

    D'un autre côté, elle est faite pour ca la fonction ... ^^

    Manuel php:

    bool is_numeric ( mixed var )
    Détermine si la variable donnée est de type numérique. Les chaînes numériques sont composées optionnellement de signes, de n'importe quel nombre de chiffres, optionnellement d'une partie décimale ainsi qu'une partie exponentielle. +0123.45e6 est une valeur numérique valide. La notation hexadécimale ( 0xFF ) est autorisée également, mais uniquement sans un signe, sans décimale et sans partie exponentielle.


    Difficile d'être plus clair.

    6.5646 est aussi numérique ... hein ... ^^ .... ou tu confonds peut être avec les entiers, dans ce cas il te faut utiliser intval, pas is_numeric.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut oki
    Oki merci.

    Donc d'après tes dires la fonction is_numeric n'a pas de points faibles niveau sécurité informatique.

    Merci.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/02/2014, 15h28
  2. La Sécurité dans Access
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 81
    Dernier message: 24/06/2007, 01h07
  3. probleme de sécurité
    Par maxmj dans le forum ASP
    Réponses: 2
    Dernier message: 10/11/2003, 20h44
  4. [TomCat][sécurité]config fichier web.xml
    Par liomac dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 24/09/2003, 15h46
  5. Pb de sécurité
    Par xtrips dans le forum Débuter
    Réponses: 6
    Dernier message: 16/04/2003, 07h50

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