SUIVI D'UNE PANNE

Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
- 12 juin 2013 à 21:36 - Dernière réponse :  sfavreau
- 18 juin 2013 à 10:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

http://codes-sources.commentcamarche.net/source/55215-suivi-d-une-panne

Afficher la suite 
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
- 12 juin 2013 à 21:36
Bonsoir

la table sql est absente du zip ?

merci ++
Messages postés
122
Date d'inscription
mercredi 19 décembre 2001
Dernière intervention
5 janvier 2009
- 17 juin 2013 à 08:28
Bonjour,

Il faut faire très attention parcequ'il y a des problèmes de sécurité avec ton code PHP.

A) problèmes au niveau SQL :
mysql_query("SELECT * FROM depannage WHERE nom = '".$_POST['nom']."'......");
Si $_POST['nom']= "' or 1=1# ";
Cela donnerait :
SELECT * FROM depannage WHERE nom = '' or 1=1# ....
alors la requête SQL devrait remonter l'ensemble des résultats de la base.
Il ne faut JAMAIS utiliser une variable utilisateur directement dans une requête SQL. Cela donne à l'internaute un accès direct à la base de donnée, et la possibilité de lancer les requêtes SQL qu'il désire (vider des tables, modifier des enregistrements, etc). Il y a plusieurs possibilités de correction :
1) passer chaque variable par une fonction de sécurisation comme "mysql_escape_string" (si c'est du texte) ou intval si c'est un numérique,
2) (solution recommandée) utiliser l'api mysqli au lieu de mysql et du coup utiliser les requêtes préparées (mysqli::prepare).
"mysql" est appelé à disparaitre au profit de "mysqli", y passer au plus tôt est une bonne chose.

B) problèmes au niveau HTML :
Tout comme il ne faut pas utiliser une variable utilisateur directement dans du code SQL, il ne faut pas non plus l'utiliser dans le code HTML directement.
ex: echo "Utilsateur :" .$_POST['nom']
si $_POST['nom']= "<script>alert(1);</script>" alors le javascript sera exécuté.
Il faut TOUJOURS ajouter un traitement à une variable utilisateur comme par exemple la fonction "htmlspecialchars" qui transforme les caractères spéciaux HTML en caractères lisibles (transforme < en < et > en > du coup le javascript ne peut être compris par le navigateur).
Si la variable attendue est un chiffre/nombre, un intval() fera une très bonne protection.

Bonne continuation

EM.
Oui en effet la table sql n'est pas présente, pouvez - vous la mettre à disposition afin de pouvoir faire des tests ? Sur le principe, l'idée de départ est intéressante. Il est vrai que l'utilisation de PDO serait peut être intéressante afin de consolider le code utilisé. Merci en tout cas pour cette source.
Pouvez - vous mettre à disposition le fichier permettant de générer la base ? Merci
Commenter la réponse de cod57

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.