Le code pour ne pas dépasser 3 essais de mot
smilemah
Messages postés
35
Statut
Membre
-
Posotaz Messages postés 505 Statut Membre -
Posotaz Messages postés 505 Statut Membre -
Bonjour,
dans mon appliction (créer par PHP) l'administrateur doit entrer un mot de passe pour accéder aux autres pages de l'application mais il doit pas passer trois essais (pour faire entrer le mpt de passe) aidez moi de savoir le code pour permetre d'effectuer ce code.
merci pour tous
dans mon appliction (créer par PHP) l'administrateur doit entrer un mot de passe pour accéder aux autres pages de l'application mais il doit pas passer trois essais (pour faire entrer le mpt de passe) aidez moi de savoir le code pour permetre d'effectuer ce code.
merci pour tous
A voir également:
- Le code pour ne pas dépasser 3 essais de mot
- Code ascii - Guide
- Trousseau mot de passe iphone - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
3 réponses
Salut,
Tout dépend du niveau de sécurité que tu désires mettre en place...
Dans un cadre de faible sécurité, j'utiliserais une variable de session pour mémoriser le nombre d'essais que j'incrémenterais à chaque tentative infructueuse (sans oublier de le remettre à 0 après réussite). Le problème c'est que les sessions peuvent être réinitialisées (en vidant le "cache", en redémarrant le navigateur ou en le faisant depuis un autre ordinateur).
Dans un cadre de sécurité élevée, j'enregistrerais toute tentative infructueuse en base de données. Je créerais une petite table nommée "échecs" et qui contient le login et le nombre d'échecs. Ainsi, même si la personne réessaie après avoir vidé la session, la DB sera juge... il te suffira de lire cette table (ou un fichier si tu préfères) avant de vérifier la validité du mot de passe.
Exemple :
L'utilisateur entre un mot de passe incorrect : "login1 / pass1".
Le code PHP va lire le fichier "echecs" pour "login1". Trois possibilités :
1. "login1" n'est pas fiché => on continue sur la tentative de login
2. "login1" est fiché mais son nombre d'essais est inférieur à 3 => on continue sur la tentative de login
3. "login1" est fiché et a essayé 3 fois sur échec => on l'informe qu'il est bloqué pour motif de sécurité.
A chaque tentative de login infructueuse, tu mets à jour ton fichier ou ta table "echecs". Si c'est la première fois qu'il se trompe tu crées la ligne (càd le ficher), sinon tu incrémentes son nombre d'échecs.
J'espère avoir été clair, à bientôt !
Tout dépend du niveau de sécurité que tu désires mettre en place...
Dans un cadre de faible sécurité, j'utiliserais une variable de session pour mémoriser le nombre d'essais que j'incrémenterais à chaque tentative infructueuse (sans oublier de le remettre à 0 après réussite). Le problème c'est que les sessions peuvent être réinitialisées (en vidant le "cache", en redémarrant le navigateur ou en le faisant depuis un autre ordinateur).
Dans un cadre de sécurité élevée, j'enregistrerais toute tentative infructueuse en base de données. Je créerais une petite table nommée "échecs" et qui contient le login et le nombre d'échecs. Ainsi, même si la personne réessaie après avoir vidé la session, la DB sera juge... il te suffira de lire cette table (ou un fichier si tu préfères) avant de vérifier la validité du mot de passe.
Exemple :
L'utilisateur entre un mot de passe incorrect : "login1 / pass1".
Le code PHP va lire le fichier "echecs" pour "login1". Trois possibilités :
1. "login1" n'est pas fiché => on continue sur la tentative de login
2. "login1" est fiché mais son nombre d'essais est inférieur à 3 => on continue sur la tentative de login
3. "login1" est fiché et a essayé 3 fois sur échec => on l'informe qu'il est bloqué pour motif de sécurité.
A chaque tentative de login infructueuse, tu mets à jour ton fichier ou ta table "echecs". Si c'est la première fois qu'il se trompe tu crées la ligne (càd le ficher), sinon tu incrémentes son nombre d'échecs.
J'espère avoir été clair, à bientôt !
Merci pour votre aide mais c'est pas trop claire surtout concernant le table "échec" merci de mieux m'exprimer
Reprenons... L'idée est d'enregistrer toute tentative infructueuse de connexion dans une table en base de données.
Cette table comportera :
- Le login
- Le nombre de tentatives
Table echecs(login : text, tentatives : integer).
Jusque là c'est simple. Cette table, il va falloir l'alimenter et surtout la lire...
Dès qu'un utilisateur va faire une tentative de connexion avec le login "login1", il faut absolument consulter la table echecs pour savoir s'il a le droit d'essayer de se connecter.
=> select tentatives from echecs where login='login1'
Soit "login1" n'est pas fiché et tu ne recevras aucune information,
Soit "login1" est fiché et tu connaîtras le nombre de tentatives infructueuses.
Dans le deuxième cas et si le nombre de tentatives est inférieur à 3, tu continues normalement, sinon tu lui bloques l'accès.
Dans le cas où il peut essayer de se logguer (soit parce qu'il n'est pas fiché ou parce que le nombre de tentatives est inférieur à 3), il peut...
- Réussir : C'est ok, tu le retires de la fiche : delete from echecs where login='login1'
- Echouer : Tu le fiches ou mets à jour sa fiche en incrémentant le nombre d'échecs : insert into echecs(login, tentatives) values ('login1', 1); ou update echecs set tentatives=tentatives+1 where login='login1'.
Je ne peux pas faire plus clair... j'espère donc que ça suffira. :-)
Cette table comportera :
- Le login
- Le nombre de tentatives
Table echecs(login : text, tentatives : integer).
Jusque là c'est simple. Cette table, il va falloir l'alimenter et surtout la lire...
Dès qu'un utilisateur va faire une tentative de connexion avec le login "login1", il faut absolument consulter la table echecs pour savoir s'il a le droit d'essayer de se connecter.
=> select tentatives from echecs where login='login1'
Soit "login1" n'est pas fiché et tu ne recevras aucune information,
Soit "login1" est fiché et tu connaîtras le nombre de tentatives infructueuses.
Dans le deuxième cas et si le nombre de tentatives est inférieur à 3, tu continues normalement, sinon tu lui bloques l'accès.
Dans le cas où il peut essayer de se logguer (soit parce qu'il n'est pas fiché ou parce que le nombre de tentatives est inférieur à 3), il peut...
- Réussir : C'est ok, tu le retires de la fiche : delete from echecs where login='login1'
- Echouer : Tu le fiches ou mets à jour sa fiche en incrémentant le nombre d'échecs : insert into echecs(login, tentatives) values ('login1', 1); ou update echecs set tentatives=tentatives+1 where login='login1'.
Je ne peux pas faire plus clair... j'espère donc que ça suffira. :-)