p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 479
    Points : 196
    Points
    196

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $string = eregi_replace("[^:alpha:](select)|(drop)|(update)|(alter)|(create)|(insert)|(grant)|(revoke)[^:alpha:]", "", $string);
    Mes phrases de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    [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
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 23 788
    Points : 91 533
    Points
    91 533
    Billets dans le blog
    20

    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
    Inscrit en
    juillet 2005
    Messages
    24 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 24 136
    Points : 35 508
    Points
    35 508

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 479
    Points : 196
    Points
    196

    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
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2007
    Messages : 479
    Points : 196
    Points
    196

    Par défaut

    Voici l'expression finale, qui fonctionne nickel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

Discussions similaires

  1. [XL-2010] Suppression ligne par mot clés
    Par CED5076 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2014, 12h36
  2. Obtenir les mots clés standard de SQL
    Par reg01 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/03/2010, 17h08
  3. [MySQL] requête sql recherche de mots clés
    Par lanysteph dans le forum PHP & MySQL
    Réponses: 5
    Dernier message: 02/07/2009, 18h13
  4. Type de données et mots clés T-SQL
    Par katoyi dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 28/04/2008, 17h52
  5. Mots clés dans une table sql
    Par vince_grenoblois dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/08/2006, 14h21

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