Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 15h34   #1
erox44
Membre actif
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 357
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 357
Points : 164
Points : 164
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...
erox44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 15h48   #2
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 075
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 18 075
Points : 64 531
Points : 64 531
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...

Citation:
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 15h53   #3
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 466
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 466
Points : 21 273
Points : 21 273
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
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 15h56   #4
erox44
Membre actif
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 357
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 357
Points : 164
Points : 164
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...
erox44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h42   #5
erox44
Membre actif
 
Homme
Développeur Web
Inscription : avril 2007
Messages : 357
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2007
Messages : 357
Points : 164
Points : 164
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...
erox44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h53.


 
 
 
 
Partenaires

Hébergement Web