Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2006, 09h24   #1
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Par défaut [SQL] strpos contre injection sql

Bonjour,
j'aimerais sécurisé chaque champs d mon formualire en testant pour chaque champs la présence des caractères suivants : /%*#"' (j'en ai peut-être oublié...
n'hésitez pas à me le dire...)

je pense (mais je ne suis pas sûr) qu'il faut utiliser la fonction strpos.
Si vous pouviez me conseiller.
D'abord est-ce la bonne méthode?
et peut-on tester cela en une seule commande ou bien faut-il faire un strpos pour chaque caractère (un pour /, un pour % etc...)
Cette fonction est-elle efficace opur un champs numérique?

merci d'avance pour votre aide.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 09h26   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Si tu veux préparer tes données en vue d'une insertion en base SQL il y a des fonctions pour ça (addslashes & co, cf la doc.).
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 09h26   #3
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
utilise des expressions regulieres, avec les addslashes avant dinserer etc
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 09h27   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Tu as des fonctions toutes faites pour ça, comme mysql_real_escape_string
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 13h34   #5
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Mais les injections mysql ne se font uniquement lorsque dans la requête, on fait allusion à un password?

cela veut dire ma requête suivante par exemple ne peut pas avoir d'injection :

$sql = "insert into lldiffusion_clients(mail,pseudo,nom,prenom,mdp,ad_ligne1,ad_ligne2,ad_ville,civilite,telephone,ad_cp,ad_ip,nomf,prenomf,ad_ligne1f,ad_ligne2f,ad_cpf,ad_villef) values('$mail','$pseudo','$nom','$prenom','$mdp','$ad_ligne1','$ad_ligne2','$ad_ville','$civilite','$telephone','$ad_cp','$ip_en_cours','$nomf','$prenomf','$ad_ligne1f','$ad_ligne2f','$ad_cpf','$ad_villef')";
$req = mysql_query($sql);// or die('Erreur SQL : <br />'.$sql);

ou encore celle-ci :

$sql = 'SELECT id,marque,designation,categorie,resume_court,prix_ttc,disponibilite FROM lldiffusion_produit WHERE resume_long LIKE "'.$pa.'" OR designation LIKE "'.$pa.'"';
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 13h36   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Rien compris là par contre
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 14h09   #7
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
Citation:
Envoyé par sam01
Mais les injections mysql ne se font uniquement lorsque dans la requête, on fait allusion à un password?
NON!!!, les injections se font du moment ou tu inseres/update/select/delete etc dans ta base des données .
1.Par exemple tu demandes a un utilisateur de laisser un avis sur un article que tu inseres ensuite dans ta base.
2. un utilisateur qui change ces infos
(a cherchant sur le net, tu trouveras dautres exemples)


Il faut meme prendre lhabitude de faire des addslshes pour tt insertion (meme celle qui te semblent inutiles) , c'est une bonne habitude à prendre
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 14h11   #8
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par rbaatouc
inseres/update/select/delete
T'as fait ton edit juste à temps... Je t'aurai la prochaine fois !
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 14h24   #9
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
Citation:
Envoyé par Eusebius
T'as fait ton edit juste à temps... Je t'aurai la prochaine fois !
pas assez rapide petit scarabet (je crois que c dans kungfu)
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h16.


 
 
 
 
Partenaires

Hébergement Web