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é] Sécurisation de formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Points : 29
    Points
    29
    Par défaut [Sécurité] Sécurisation de formulaire
    Bonjour,

    Sur cette page j'ai trouvé des infos sur l'injection SQL:

    http://www.phpsecure.info/v2/article/InjSql.php

    aucun de mes formulaires ne réagit sur: \" or a=\"a , (j'ai essayé avec des ' ou des \") alors est-ce que parce qu'ils sont suffisamment sécurisés (je ne vois pas comment...) ou alors je ne trouve pas la bonne formule...

    Enfin, je ne trouve pas exactement si je peux utiliser la fonction mysql_real_escape_string() car l'une des données envoyées contient une @ ...

    Est-ce qu'il y a un endroit où l'on peut trouver une liste des caractères qui permettrait ces injections, de façon à pouvoir bloquer la saisie de ceux-ci ?

    Merci

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    hello,

    mysql_real_escape_string() te permet justement de te prémunir de ces caractères. Donc pas besoin d'avoir une liste de caractères à proscrire (surtout que bloquer les apostrophes par exemple, ça risque de limiter pas mal les saisies...).

    Sinon pour le fait que tu n'arrives pas à reproduire, déjà pour s'en rendre compte, le mieux est d'afficher la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>', htmlspecialchars( $requete ), "</pre><br />\n";
    Ainsi tu verras si les antislashs ont été ajoutés ou non...

    Si magic_quote_gpc est activé dans ta configuration de PHP, alors PHP aura automatiquement ajouté un antislash devant les guillemets simple ou doubles... sauf qu'il "oublie" des caractères auxquels MySQL est sensible... dans ce cas, comme indiqué dans la doc il faut faire un stripslashes() suivit d'un mysql_real_escape_string().

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    Salut,

    Merci pour toutes ces précisions, je vais m'employer à sécuriser tout ça.

    Bonne fin d'après-midi

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Et que penser de strip_tags ?
    Utile ou non ?

  5. #5
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Pour moi non.

    MySQL n'est absolument pas sensible au HTML, donc pour lui ça ne changera rien, et seule mysql_real_escape_string() est utile.

    Après pour l'affichage, tout dépend de ce que tu cherches à faire... pour ma part je me contente de htmlspecialchars().

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Alors effectivement le magic_quote_gpc est activé, donc j'ai mis quand même en place le mysql_real_escape_string(), mais je n'ai pas réussie à trouver comment on peut enlever ces antislashs, si bien que je ne peux pas vraiment tester pour voir si c'est efficasse.

    Par contre, toujours concernant les caractères, mysql_real_escape_string() ne gère pas les %, et sur une de mes requetes avec LIKE, il suffisait d'entrer % autour de quelque chose pour passer... j'ai rajouté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $valeur = str_replace( '%', '', $valeur );
    a priori ça fonctionne bien.

    Alors, est-ce que je suis vraiment à l'abri, ou est-ce qu'il y a d'autres caractères que je dois remplacer pour être tranquille...

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

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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