webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 12 janv. 2009 à 23:01
Je trouve ça presque intolérable que les écoles puissent apprendre ce genre de code aux étudiants... Il y'a malheureusement des profs qui ne sont pas suffisamment formés dans les domaines qu'ils enseignent :(
Florian54700
Messages postés5Date d'inscriptionsamedi 10 mars 2007StatutMembreDernière intervention23 mars 2009 12 janv. 2009 à 22:52
Merci des commentaires.
Comme vous l'avez spécifié, c'est belle et bien du code que l'on apprend en école.
Je tacherais de faire évoluer mon script dans les jours à venir.
Merci encore.
Florian
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 12 janv. 2009 à 19:57
Salut !
Je n'ai pas vraiment trop envie de commenter mais il y'a plein de trucs qui ne servent à rien ou qui sont mal implémentés dans ton code. Sans parler des failles de sécurité béantes que tu nous laissent... Ton code est un exemple d'école à ne surtout pas montrer aux autres tellement il présente des mauvaises pratiques et tellement il est dangereux.
En voici les raisons :
## Fichier index.php ##
Ce n'est que du code HTML mais du code HTML d'il y'a 10 ans. Il manque plein d'informations essentielles dans le header, il n'y a pas de Doctype, le formulaire en tableau c'est loin d'être accessible...
## Fichier verification.php ##
- Il serait judicieux d'utiliser session_name() avant session_start() pour changer le nom de la session par défaut
- Il faudrait aussi utiliser session_regenerate_id() pour renouveler l'identifiant de session à chaque page afin d'éviter une attaque par fixation de session
- Tu aurais pu placer des identifiants de connexion à mysql dans un fichier annexes et si possible dans des constantes,
- Les fonctions mysql_*() sont aujourd'hui désuètes. Il vaudrait mieux utiliser MySQLi ou au mieux PDO pour s'interfacer avec MySQL,
- Les gros or die() ce n'est pas super top... Une erreur doit être traitée correctement : logguée dans un fichier de log par exemple et l'utilisateur renvoyé vers une page d'erreur interne (code HTTP 500) lui indiquant qu'une erreur s'est produite et qu'il ne peut continuer son parcours,
$information = 'SELECT id,login,mot_de_passe FROM membre WHERE login='.$_POST['login'].'';
$infos = mysql_fetch_assoc($information);
Ces deux lignes sont une horreur absolue et ne fonctionne pas, heureusement :
1/ Il n'y a pas de mysql_query() donc le mysql_fetch_assoc() ne retournera jamais rien
2/ Tu ne testes pas ta variable $_POST['login'] ? Qu'est ce qu'il se passe si j'appelle ton script sans envoyer "login" dans ma requête HTTP POST ?
3/ Surtout ne sécurise pas ta variable !!! Avec ton code, je détruis ta base de données comme je veux
if ($_POST['login'] == $infos['login'] AND $_POST['mdp'] == $infos['mot_de_passe'])
4/ La encore, que se passe-t-il si "login" et "password" ne sont pas envoyés en POST ?
5/ Depuis quand stocke-t-on des mots de passe en clair dans la base de données ?
$_SESSION['membre'] = 'oui';
6/ Tu aurais pu utiliser une valeur booléene ici (true / false), ça sert à ça...
8/ Dans l'idéal, tu peux te passer du else si tu initialises ta variable de session à "false" au début du programme
Quand aux autres fichiers, ils sont du même acabit que celui-ci, donc je n'irais pas plus loin dans mes critiques. Je laisse les autres prendre le temps de le faire à ma place.
12 janv. 2009 à 23:01
12 janv. 2009 à 22:52
Comme vous l'avez spécifié, c'est belle et bien du code que l'on apprend en école.
Je tacherais de faire évoluer mon script dans les jours à venir.
Merci encore.
Florian
12 janv. 2009 à 19:57
Je n'ai pas vraiment trop envie de commenter mais il y'a plein de trucs qui ne servent à rien ou qui sont mal implémentés dans ton code. Sans parler des failles de sécurité béantes que tu nous laissent... Ton code est un exemple d'école à ne surtout pas montrer aux autres tellement il présente des mauvaises pratiques et tellement il est dangereux.
En voici les raisons :
## Fichier index.php ##
Ce n'est que du code HTML mais du code HTML d'il y'a 10 ans. Il manque plein d'informations essentielles dans le header, il n'y a pas de Doctype, le formulaire en tableau c'est loin d'être accessible...
## Fichier verification.php ##
- Il serait judicieux d'utiliser session_name() avant session_start() pour changer le nom de la session par défaut
- Il faudrait aussi utiliser session_regenerate_id() pour renouveler l'identifiant de session à chaque page afin d'éviter une attaque par fixation de session
- Tu aurais pu placer des identifiants de connexion à mysql dans un fichier annexes et si possible dans des constantes,
- Les fonctions mysql_*() sont aujourd'hui désuètes. Il vaudrait mieux utiliser MySQLi ou au mieux PDO pour s'interfacer avec MySQL,
- Les gros or die() ce n'est pas super top... Une erreur doit être traitée correctement : logguée dans un fichier de log par exemple et l'utilisateur renvoyé vers une page d'erreur interne (code HTTP 500) lui indiquant qu'une erreur s'est produite et qu'il ne peut continuer son parcours,
$information = 'SELECT id,login,mot_de_passe FROM membre WHERE login='.$_POST['login'].'';
$infos = mysql_fetch_assoc($information);
Ces deux lignes sont une horreur absolue et ne fonctionne pas, heureusement :
1/ Il n'y a pas de mysql_query() donc le mysql_fetch_assoc() ne retournera jamais rien
2/ Tu ne testes pas ta variable $_POST['login'] ? Qu'est ce qu'il se passe si j'appelle ton script sans envoyer "login" dans ma requête HTTP POST ?
3/ Surtout ne sécurise pas ta variable !!! Avec ton code, je détruis ta base de données comme je veux
if ($_POST['login'] == $infos['login'] AND $_POST['mdp'] == $infos['mot_de_passe'])
4/ La encore, que se passe-t-il si "login" et "password" ne sont pas envoyés en POST ?
5/ Depuis quand stocke-t-on des mots de passe en clair dans la base de données ?
$_SESSION['membre'] = 'oui';
6/ Tu aurais pu utiliser une valeur booléene ici (true / false), ça sert à ça...
header('Location: membre.php');
7/ Dans l'idéal, il faut un chemin absolu : http://www.monsite.com/membre.php
8/ Dans l'idéal, tu peux te passer du else si tu initialises ta variable de session à "false" au début du programme
Quand aux autres fichiers, ils sont du même acabit que celui-ci, donc je n'irais pas plus loin dans mes critiques. Je laisse les autres prendre le temps de le faire à ma place.
++