SECURISATION D'UNE ZONE

Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- - Dernière réponse : nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
- 11 nov. 2008 à 19:06
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/48422-securisation-d-une-zone

Afficher la suite 
nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25 -
Oui et puis en plus je viens de tiquer sur le fait que tu as deux password différent pour la connection a la base dans deux fichier différent, je crois que le premier est : "aphrodite" et le deuxième est : "xxx", ça ne sert a rien de cacher le password dans un fichier et de le cacher dans l'autre, soit tu le cache partout soit tu ne le cache pas.

a++

PS : cette source existe déja de niveau plus ou moins haut et en version objet, ton code n'a pas sa place ici pour l'instant et encore moins en niveau initié.
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29 -
mysql_ n'est pas obsolete... c'est juste plus a la mode.
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
2 -
C'est une blague ?

Déjà ta table SQL n'est pas optimisée. Pourquoi mettre un identifiant de 15 caractères alors que dans la réalité 5 ou 6 devrait largement suffire. Pareil pour les autres champs. Je n'ai jamais vu de password de 100 caractères. Tu parles en plus de stocker le password en md5 dans la base. Sachant qu'un md5 a toujours une longueur de 32 caractères, pourquoi laisses-tu une place de 100 caractères ? Le login est aussi un champ unique théoriquement. Pourquoi n'y a-t-il pas d'index d'unicité sur le login et un index simple sur le password ?

Concernant la sécurité md5, celle que tu as mise en place n'est pas suffisante car il existe des tableaux de correspondance password clair / password hashé qui te permettent de retrouver un password en clair depuis son équivalent hashé. Pour éviter cela, il faudrait faire entrer en jeu une salt (ou graine) en plus à ton password.

En ce qui concerne ton code PHP, il n'a rien de securisé puisque :

1/ Tu passes ton login et ton password dans l'url. On ne passe pas de password dans l'url même crypté, c'est déjà une première mauvaise pratique.
2/ Tu mélanges logique métier et affichage. En gros ça devient vite le foutoir et en l'état ton code n'est presque pas réutilisable ailleurs.
3/ Que se passe-t-il si la requête SQL échoue ? Ton code continue de tourner alors qu'il ne devrait pas et il risque d'afficher plein d'erreurs PHP qui donnent plein d'informations à un pirate. Encore là, la sécurité est assez médiocre.
4/ Pourquoi utiliser des fonctions obsolètes PHP 4 comme mysql_*() alors que l'extension PDO ou MySQLi existent en PHP 5 ?
5/ mysql_fetch_array() est lent. Préfère mysql_fetch_assoc()
6/ Pas de SELECT * mais on liste les champs
7/ Pourquoi tu boucles sur tous les champs pour tester les logins et passwords alors que tu peux tout faire en une requête SQL ?

bref y'a plein de trucs qui ne vont pas. Ton code doit directement aller à la poubelle. Il est d'une part faux et d'autre part complètement obsolète.

++

PS : ne prends pas mal mes remarques malgré tout.
nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25 -
Salut,

Dit le si tu crois que je vais trop loin mais je ne crois pas que cette source soit de niveau initié non plus mais plutot de niveau débutant, il n'y a rien de formidable a mettre un champ text et un bouton dans une page et a récupèrer le text pour le crypter en md5 et l'envoyer a un autre fichier qui l'enregistre dans une base mysql.

Peus tu m'expliquer plus en détail ce que ta source nous apporte ?

a++
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29 -
salut

en quoi ca vaut expert ?

# $retour = mysql_query('SELECT * FROM login ORDER BY id DESC');

pourquoi selectionner plein de lignes ? et pourquoi les trier ?

alors que tu peux te contenter de faire un SELECT 1 FROM login WHERE login="monlogin" AND password="monmd5"

ca serait beaucoup plus rapide...