Quelle est la meilleure chose à stocker dans un cookie pour garder un état connecté persistant?Que devrait être stocké dans un cookie pour un système de connexion?
J'ai vu de nombreux sites Web (et des tutoriels pour débutants!) Qui stockent simplement quelque chose comme validUser = 1 dans un cookie. Clairement, je pourrais usurper cela et le site web penserait que j'étais un utilisateur valide.
Si le nom d'utilisateur est stocké dans le cookie, je pourrais me faire passer pour n'importe quel utilisateur en envoyant un cookie avec son nom d'utilisateur dans ma demande. Donc, si vous stockez le nom d'utilisateur et mot de passe dans le cookie, alors je dois connaître le nom d'utilisateur et mot de passe pour se connecter. Effectivement l'utilisateur est connecté automatiquement - c'est comme avoir le mot de passe enregistré par son navigateur. Au lieu d'avoir à taper les informations d'identification dans les boîtes à chaque fois, le navigateur les envoie automatiquement à chaque demande de page.
Mais est-ce encore une mauvaise idée? Stocker un mot de passe en texte brut n'est pas une idée géniale, mais c'est comme ça qu'il serait envoyé dans les données POST lors de la connexion. Et d'ailleurs, il pourrait être stocké en hachage. Mais je ne me sens toujours pas à l'aise avec ça.
Il se peut que les cookies ne soient pas utilisés pour stocker autre chose qu'un ID de session et que les données utilisateur soient stockées sur le serveur lui-même. C'est peut-être un endroit plus sûr, supposant que le serveur n'est pas partagé. En regardant certains logiciels open source tels que les logiciels de forum, ils utilisent un système plus compliqué, mais je ne pouvais pas comprendre exactement ce qu'il faisait en parcourant le code.
Quelle est la «meilleure pratique» standard?
Alors est-ce aussi simple que de stocker un identifiant d'utilisateur dans la session? C'est sûr, et pas besoin de stocker plus d'informations sur un login particulier dans la base de données? (par exemple IP), et de changer toutes les session/données à chaque fois qu'ils reviennent, comme j'ai vu ces grands scripts faire? – Rob
Dans la mesure du possible, vous devriez réutiliser un cadre d'authentification existant car, en réalité, c'est complexe. Par exemple, jetez un oeil à https://github.com/delight-im/PHP-Auth – caw