Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 462
    Points : 190
    Points
    190

    Par défaut suppression de certains mots clés SQL

    Hello, je suis en train de créer une petite fonction perso pour supprimer certains mots-clés SQL , voici ce que j'ai actuellement :

    Code :
    $string = eregi_replace("[^:alpha:](select)|(drop)|(update)|(alter)|(create)|(insert)|(grant)|(revoke)[^:alpha:]", "", $string);
    Mes phrases de test :
    Code :
    1
    2
    3
    $_POST["toto"] = " selection; select * from users;select * from users;";
    $_POST["tot2o"] = "drop table toto; droppy !";
    $_POST["tot2o3"] = " grant * on users; grannt";
    Actuellement ça me sort ça apres traitement :
    Code :
    [toto] => selection; * from users * from users; [tot2o] => table toto; py ! [tot2o3] => * on users; grannt

    Il manque pas grand chose mais le mot clé "DROP" pose probleme là, vous voyez d'où ça peut venir?


    merci.
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  2. #2
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    22 229
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 22 229
    Points : 86 297
    Points
    86 297
    Billets dans le blog
    3

    Par défaut

    C'est destiné à quoi au juste ?
    Parce que si c'est pour protéger tes bases, ce n'est pas la bonne façon de procéder...

    le mot clé "DROP" pose probleme là
    Non, c'est n'est le mot qui pose problème : le problème sera présent pour tous termes
    Utilise les marqueurs de début et de fin de mot : \b.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 280
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 280
    Points : 31 018
    Points
    31 018

    Par défaut

    Je ne vois effectivement pas ce qui ne va pas dans ton expression (à part eregi qui est obsolète) mais sinon :
    Code :
    echo preg_replace("#\b(select|drop|update|alter|create|insert|grant|revoke)\b#", "", $string);
    edit : encore doublé par bovino

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 462
    Points : 190
    Points
    190

    Par défaut

    Hello, merci pour vos réponses,
    donc deja non, c'est pas pour sécuriser ma base, mais plus un complément.
    Le but étant de supprimer uniquement les mots clés, et non les mots contenant ces mots-clés:

    droppy => ne bouge pas.
    drop * from toto => * from toto;



    EDIT: avec ton pattern ca passe nickel Sabotage, merci, par contre faut rajouter \i à la fin pour une expression insensitive de tête non?
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 462
    Points : 190
    Points
    190

    Par défaut

    Voici l'expression finale, qui fonctionne nickel :

    Code :
    $string = preg_replace("/\b(select|drop|update|alter|create|insert|grant|revoke)\b/i", "", $string);

    merci à vous deux.
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •