Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 09/08/2007, 01h54   #1
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Par défaut Formulaire et protection contre injection

Bonjour,

J'ai réalisé un formulaire qui envoi des donnees dans ma bd, 5 données de type texte, une donnée de type textbox et un envoi de type file.

J'aimerais protéger au maximum mon formulaire contre l'injection de script.

Seulement je ne sais pas si je dois formater mes données avant leurs envoi sur sql ou aprés lors de l'affichage des données dans mon site ???

Quesqui est le plus éficase d'aprés vous ??
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 08h36   #2
Membre Expert
 
Avatar de jbrasselet
 
Homme Julien Brasselet
Ingénieur développement logiciels
Inscription : mars 2006
Messages : 952
Détails du profil
Informations personnelles :
Nom : Homme Julien Brasselet
Âge : 32
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2006
Messages : 952
Points : 1 382
Points : 1 382
Envoyer un message via MSN à jbrasselet
Il faut que tu sécurises tes données avant de les envoyer dans ta BD. C'est ce qu'il y a de mieux.
Il y a pas mal de chose comme ça déjà sur le forum. Tu devrais pouvoir trouver facilement les actions à réaliser.
__________________
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
jbrasselet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 09h24   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Pouéviter les injections SQL tu peux activer magic_quotes_gpc dans ton php.ini ou alors si magic_quotes_gpc n'est pas activé, tu peux utiliser mysql_real_escape_string sur chacune de tes variables que tu passes en paramètres dans ta requête SQL.

Une injection SQL est normalement une injection de bout de code par l'utilisateur dans ta requête afin de modifier la requête elle-même et non pas les valeurs pour accéder à des infos normalement inaccessible. C'est assez rare en PHP tout de même mais il faut tout de même s'en protéger. Regarde ce post. Donc à l'affichage il ne peut rien t'arriver de bien fantastique
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 09h59   #4
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
ok, je pense avoir compris, mais par exemple quand dans mon formulaire je tape la balise <b>texte<b> mon texte dans l'admin et sur mon site est en gras.

Comment éviter sa ???
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 10h02   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Tu peux utiliser strip_tags() pour retirer toutes balises HTML et PHP d'une chaine.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 16h33   #6
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
J'ai utilisé strip_tags() comme me la conseillé koopajah sur tout mes echos sensible, est-il possible de se contenter de cette sécurité ????
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 16h40   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par Overstone
J'ai utilisé strip_tags() comme me la conseillé koopajah sur tout mes echos sensible, est-il possible de se contenter de cette sécurité ????
Non il faut aussi te protéger des injections SQL et donc utiliser mysql_real_escape_string()
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 16h59   #8
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Si ma bd ne contient qu'une info confidentiel j'utilise mysql_real_escape_string() que sur cette valeur ???
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 17h02   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par Overstone
Si ma bd ne contient qu'une info confidentiel j'utilise mysql_real_escape_string() que sur cette valeur ???
Non, ca n'a rien a voir avec les infos confidentielles: definition
Tu dois l'utiliser sur tous les champs texte que tu insères dans la base (voir les autres si tu ne fais pas de vérification dessus)
en gros tu dois vérifier tout ce qui est saisi par l'utilisateur.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 17h21   #10
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Ok Je dois placer mysql_real_escape_string() avant ou aprés l'envoi vers ma bd ???

Code :
1
2
3
// insertion dans base de donnée 
$sql = "INSERT INTO demande VALUES ( '".$id."', '".$site."', now(), '".$langue[0]."', '".$ip."', '".$mail."', '".$libre."', '".$url."', '".$genre."', '".$langueURL."', '".$describ."', '".$final."', '".$taille."', now())";
$res = mysql_query($sql) or die(mysql_error());
car j'ai du mal à comprendre les exemples
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 17h29   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Exemple sur les trois premiers:
Code :
$sql = "INSERT INTO demande VALUES ( '".mysql_real_escape_string($id)."', '".mysql_real_escape_string($site)."', now(), etc.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 17h46   #12
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Voila tout marche nikel
Ya t'il encore quelque chose que je pourais faire pour avoir une sécurité un peu plus accru ... sans vouloir aller trop loin

sinon je manipule des données dans mon admin et je fait des requetes dans ma partit client, je dois me protéger même là ?
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h45.


 
 
 
 
Partenaires

Hébergement Web