Connexion bbd - password utilisateur (sha1) - connexion
Fermé
antho861
Messages postés
4
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
2 septembre 2016
-
Modifié par NHenry le 2/09/2016 à 21:37
NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 - 3 sept. 2016 à 00:03
NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 - 3 sept. 2016 à 00:03
A voir également:
- Connexion bbd - password utilisateur (sha1) - connexion
- Gmail connexion - Guide
- Hotmail connexion - Guide
- Facebook connexion - Guide
- Gps sans connexion - Guide
- Site inaccessible n'autorise pas la connexion - Guide
3 réponses
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
Modifié par NHenry le 2/09/2016 à 21:45
Modifié par NHenry le 2/09/2016 à 21:45
3 choses :
- As-tu penser à échapper les chaines récupérées de $_POST['pwd'] pour éviter les injections SQL ?
- Penses à "saler" ton mot de passe.
- Pourquoi enregistrer le mdp dans la session, juste mémoriser l'ID de l'utilisateur est suffisant, non ?
Essayes peut être de calculer le MDP avant de l'injecter dans la requête.
Et sinon pourquoi faire 2 requêtes ?
SELECT * FROM admin WHERE login = '$nomLogin' AND password = SHA1('$passpwd')
(tu as oublié les ' autour de $nomLogin)
Car avec tes 2 requêtes, un utilisateur peut usurper n'importe qui, si il a un mdp (pas de lien utilisateur/mdp direct avec ton code)
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
- As-tu penser à échapper les chaines récupérées de $_POST['pwd'] pour éviter les injections SQL ?
- Penses à "saler" ton mot de passe.
- Pourquoi enregistrer le mdp dans la session, juste mémoriser l'ID de l'utilisateur est suffisant, non ?
Essayes peut être de calculer le MDP avant de l'injecter dans la requête.
Et sinon pourquoi faire 2 requêtes ?
SELECT * FROM admin WHERE login = '$nomLogin' AND password = SHA1('$passpwd')
(tu as oublié les ' autour de $nomLogin)
Car avec tes 2 requêtes, un utilisateur peut usurper n'importe qui, si il a un mdp (pas de lien utilisateur/mdp direct avec ton code)
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
antho861
Messages postés
4
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
2 septembre 2016
2 sept. 2016 à 21:54
2 sept. 2016 à 21:54
Je t'avoue que j'ai regarder un tutoriel ( mes cours au centre de formation on été trop succinct ce qui m'ennuie un peu)
Pour la sécurité et éviter les chaînes je n'y ai pas penser car sur le moment penser à ça... Et je t'avoue je saurais peut être pas le faire ou je regarderai sur internet.
Pour le salt j'ai entendu parler pour le md5 mais j'avais pas trop compris et vu que je suis en sha1 j'ai pas chercher...
C'est la toute première fois que j'utilise reelement lez session et cookie... Et j'ai un peu de mal avec tout ça
Faire deux requêtes c'était pour comparer et le login et puis le mot de passe mais c'est vrai que c'est un peu inutile... Je me suis un peu tâter mais dans le tutoriel il faisait comme ça ( enfin lui le login et mdp étaient en dur)
Oui je l'avais calculer tu vois en commentaire et ça n'avait pas marcher du coup j'ai voulu changée de stratégie...
Je te remercie de ton aide
Pour la sécurité et éviter les chaînes je n'y ai pas penser car sur le moment penser à ça... Et je t'avoue je saurais peut être pas le faire ou je regarderai sur internet.
Pour le salt j'ai entendu parler pour le md5 mais j'avais pas trop compris et vu que je suis en sha1 j'ai pas chercher...
C'est la toute première fois que j'utilise reelement lez session et cookie... Et j'ai un peu de mal avec tout ça
Faire deux requêtes c'était pour comparer et le login et puis le mot de passe mais c'est vrai que c'est un peu inutile... Je me suis un peu tâter mais dans le tutoriel il faisait comme ça ( enfin lui le login et mdp étaient en dur)
Oui je l'avais calculer tu vois en commentaire et ça n'avait pas marcher du coup j'ai voulu changée de stratégie...
Je te remercie de ton aide
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
2 sept. 2016 à 22:01
2 sept. 2016 à 22:01
As-tu ton code d'ajout, histoire de comparer d'où peut venir la différence ?
antho861
Messages postés
4
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
2 septembre 2016
2 sept. 2016 à 22:08
2 sept. 2016 à 22:08
Tu veux dire pour la connexion ?
C'est juste un
<input type="text" name="login" />
<input type="password" name="pwd" />
Sinon si tu parlez du tutoriel
http://www.lephpfacile.com/cours/18-les-sessions
C'est juste un
<input type="text" name="login" />
<input type="password" name="pwd" />
Sinon si tu parlez du tutoriel
http://www.lephpfacile.com/cours/18-les-sessions
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
2 sept. 2016 à 23:17
2 sept. 2016 à 23:17
Comment as-tu ajouté ton utilisateur dans ta base de données (INSERT INTO) ?
antho861
Messages postés
4
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
2 septembre 2016
>
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
2 sept. 2016 à 23:41
2 sept. 2016 à 23:41
Je l'ai ajouté manuellement dans mysql
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
3 sept. 2016 à 00:03
3 sept. 2016 à 00:03
Ok, donc je vais lister les quelques points :
- Je ne sais pas ce que tu as mis dans ta base de données comme information d'utilisateur/mdp, mais cela importe peu.
- Entre une identification via des identifiants en BDD et en dur dans le code, ça dépend du besoin, mais souvent c'est la base de données qui est le plus intéressant.
- Il faut que tu récupères les données de l'utilisateur (comme je le suggère avec ma requête SQL), si il n'y a pas de données retournées, c'est que l'identifiant n'est pas bon.
- Je te conseil d'aller voir un tutoriel sur PDO, car tu t'y prends mal pour récupérer les données de tes requêtes SQL.
- Regarde aussi sur ce tutoriel comment faire des requêtes paramétrées, cela évite les injections SQL.
- Le "sel" permet d'éviter de pouvoir retrouver un mdp à partir d'une rainbow table, que ce soit MD5 (déconseillé maintenant), SHA* ou plus généralement, tout algorithme de hashage.
- Dans la session on ne stock que les données utiles, le MDP n'est pas utile, et potentiellement, peut causer une fuite de données, donc en session, tu peux stocker le pseudo de l'utilisateur et son ID pour le retrouver plus facilement esuite.
Pour l'ajout de l'utilisateur, je te conseil de te faire un bout de code, cela te permettra d'avoir une bonne méthode de calcul.
Avec ton état actuel, tu peux toujours faire un UPDATE ... SET ... WHERE ...
En mettant ton MDP déjà hashé en paramètre.
- Je ne sais pas ce que tu as mis dans ta base de données comme information d'utilisateur/mdp, mais cela importe peu.
- Entre une identification via des identifiants en BDD et en dur dans le code, ça dépend du besoin, mais souvent c'est la base de données qui est le plus intéressant.
- Il faut que tu récupères les données de l'utilisateur (comme je le suggère avec ma requête SQL), si il n'y a pas de données retournées, c'est que l'identifiant n'est pas bon.
- Je te conseil d'aller voir un tutoriel sur PDO, car tu t'y prends mal pour récupérer les données de tes requêtes SQL.
- Regarde aussi sur ce tutoriel comment faire des requêtes paramétrées, cela évite les injections SQL.
- Le "sel" permet d'éviter de pouvoir retrouver un mdp à partir d'une rainbow table, que ce soit MD5 (déconseillé maintenant), SHA* ou plus généralement, tout algorithme de hashage.
- Dans la session on ne stock que les données utiles, le MDP n'est pas utile, et potentiellement, peut causer une fuite de données, donc en session, tu peux stocker le pseudo de l'utilisateur et son ID pour le retrouver plus facilement esuite.
Pour l'ajout de l'utilisateur, je te conseil de te faire un bout de code, cela te permettra d'avoir une bonne méthode de calcul.
Avec ton état actuel, tu peux toujours faire un UPDATE ... SET ... WHERE ...
En mettant ton MDP déjà hashé en paramètre.