ESPACE MEMBRE SIMPLE V1.0

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 12 janv. 2009 à 19:57
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 12 janv. 2009 à 23:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48952-espace-membre-simple-v1-0

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
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és 5 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 23 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és 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
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...

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.

++
Rejoignez-nous