Bonsoir à tous !
Je me pose actuellement des questions sur les sessions php et le moyen le plus sûr de tester si un utilisateur est connecté.
Est-il suffisant de tester si une variable de session perso existe pour valider l'identification de l'utilisateur ?
Exemple : Lors de la soumission du formulaire de connexion, je check la bdd pour vérifier le nom utilisateur, le mot de passe et je créé une variable de session avec une valeur fixe. Par exemple :
$_SESSION['logged'] = 'ma-super-token-secrete';
Une simple vérification comme un :
if (isset($_SESSION['logged']) && ($_SESSION['logged'] == 'ma-super-token-secrete'))
est-elle suffisante ?
Si oui, merci de m'indiquer dans quelle mesure ?
Si non, j'ai lu sur plusieurs site que l'on pouvait ajouter une token qui se régénère à chaque page.
Quel est le moyen le plus optimisé sécurité/rapidité d'éxecution entre :
1) La token est envoyée par url puis vérifiée avec la variable de session puis regénérée. Par exemple :
1 2 3 4 5 6 7
| if (isset($_SESSION['logged']) && isset($_GET['token']) && ($_SESSION['logged'] == $_GET['token'])) {
$_SESSION['logged'] = regerate_token();
//utilisateur loggé
}
else {
//utilisateur non loggé
} |
On écris chacun de ses liens avec la nouvelle token en paramètre :
<a href="http://www.monsite.com/index.php?token=<?php echo $_SESSION['logged']; ?>">Mon Lien</a>
2) La token (unique pour chaque membre) est dans la BDD et on check les correspondances avec la variable de session. C'est le même principe sauf qu'au lieu de checker le $_GET['token'], on check la token dans la bdd (on store également le nom d'utilisateur dans les variables de session pour la correspondance). On profite pour update la token dans la bdd dans la fonction regenerate_token().
J'imagine la deuxième solution plus lourde (2 appels à la base tout de même) mais moins contraignante (pas de token dans l'url).
Merci pour vos réponses !
Partager