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 -
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
A voir également:

3 réponses

Posotaz Messages postés 505 Statut Membre 225
 
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 !
0
smilemah Messages postés 35 Statut Membre
 
Merci pour votre aide mais c'est pas trop claire surtout concernant le table "échec" merci de mieux m'exprimer
0
Posotaz Messages postés 505 Statut Membre 225
 
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. :-)
0