TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
24 avril 2009 à 13:30
Salut,
Une première petite remarque sans grand rapport direct avec la sécurité, ce n'est a mon goût pas vraiment une bonne idée de modifier directement $_POST. Tu peux tout simplement virer tes deux premières lignes et utiliser mysql_real_escape_string() lors de la création de la requête SQL :
$requete_verif = "SELECT admin_login, admin_pwd FROM t_admins WHERE
admin_login='" . mysql_real_escape_string($_POST["admin_login"]) . "' AND admin_pwd
='" . mysql_real_escape_string($_POST["admin_pwd"]) . "'";
De même, concernant ce morceau de code :
$nombre = mysql_num_rows($resultat_verif);
if ($nombre>0)
Pourquoi ne pas avoir tout simplement fait ceci ?
if (mysql_num_rows($resultat_verif) > 0)
Sinon, pense a toujours vérifier si ta requête a réussie ou
échouée et gère la potentielle erreur le cas échéant. Au passage, c'est
inutile de sélectionner admin_pwd si tu ne t'en sert pas ;)
Ensuite, une remarque plus importante : pour utiliser ce procédé je devine que les mots de passes sont stockés en clair dans la base de donnée. Si c'est en effet le cas, c'est une très mauvaise chose : si quelqu'un arrive a dumper ta bdd il a directement les accès admin. Le mieux est de les hasher avant de les insérer. Au sujet de l'algorythme de hash, md5 et sha1 sont assez populaires et pas trop mauvais, mais ils commencent a montrer des faiblesses. Personnellement je préfère utiliser du sha256, ça évite pas mal d'attaques par rainbow tables si quelqu'un arrive a dumper ta base de donnée (regarde donc les différents sites de cassage de hash sur internet, presques tous concernent uniquement md5 et sha1). En plus si tu hash le pass tu n'as même plus besoin de faire un mysql_real_escape_string() dessus ;)
$requete_verif = "SELECT admin_login FROM t_admins WHERE
admin_login='" . mysql_real_escape_string($_POST['admin_login']) . "' AND admin_pwd
='" . hash('sha256', $_POST['admin_pwd']) . "'";