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 :

echappement de caracteres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut echappement de caracteres
    Salut,

    je suis tombé sur un article de sécurité pour une injection sql qui dit çà (on est dans le cas d'une authentification):

    Ainsi pour sécuriser cette faille, il faut parser les input avant d'effectuer la requête MySQL, en vérifiant que $login et $password ne contiennent pas les caractères suivant : () / , ; . : # < > | \ ". Voici comment procéder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $login = trim(htmlspecialchars(addslashes($login)));      //Parsing du login
    $password = trim(htmlspecialchars(addslashes($password)));      //parsing du password
     
    if ((strlen($login) != 0) && (strlen($password) != 0))
    {
        //REQUETE MYSQL
    }
    else
    {
        echo "fuck you :) \n";
    }
    première chose je comprends pas où sont contrôlés les caractères : # () , ; . : |
    en survolant la doc php je vois que htmlspecialchars gère & ' " > < et addslashes ' " \ NUL mais nulle trace des caractères précédemment cités.
    Cependant si ces fonctions ne le font pas j'imagine qu'il doit y avoir d'autres fonctions pour ces caracteres.

    Ensuite je comprend pas l'utilité du htmlspecialchar ici puisqu'il s'agit d'une authentification et donc qu'on est pas en situation d'affichage... donc de sortie html.

    A la base j'utilise juste msqli_real_escape_string, mais j'avoue que selon la doc ça échappe pas plus les ) ( & | ;
    et dans mon traitement de formulaire du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!empty($_POST['login']) && !empty($_POST['pass'])) 
    {...}
    jimagine que si on met pour login une entrée du genre :
    ) || ''='' )#
    ca passe sans problème la condition.

    Comment faire pour protéger son code contre ça?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Je ne vois pas où est le pb avec les caractères : () / , ; . : # < > | \ ", un simple mysql_real_escape_string( ) fera parfaitement l'affaire en échappant notamment les ' et les " afin d'éviter que la chaîne de la condition WHERE login = '%s' ne soit fermée plus tôt que prévu et que du code soit injecté.

    A la base j'utilise juste msqli_real_escape_string, mais j'avoue que selon la doc ça échappe pas plus les ) ( & | ;
    et dans mon traitement de formulaire du genre :
    Code :


    if (!empty($_POST['login']) && !empty($_POST['pass']))
    {...}


    jimagine que si on met pour login une entrée du genre :
    ) || ''='' )#
    ca passe sans problème la condition.

    Comment faire pour protéger son code contre ça?
    Protéger contre quoi ? L'authentification échouera, c'est tout.

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

Discussions similaires

  1. Echapper le caractere "/"
    Par chris52 dans le forum Langage
    Réponses: 8
    Dernier message: 03/05/2012, 11h13
  2. probleme d'echappement de caractere en sql
    Par falifalibe2 dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/11/2009, 17h39
  3. Echapper des caracteres
    Par Invité dans le forum jQuery
    Réponses: 4
    Dernier message: 04/07/2009, 12h42
  4. caractere d'echappement
    Par leviathan516 dans le forum ASP
    Réponses: 3
    Dernier message: 19/10/2004, 20h34
  5. [caractere]echappement # et servlet
    Par okoax dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 22/04/2004, 16h29

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