18-04-2017, 11:38 PM
A ta guise. Je réponds quand même aux inquiétudes évoquées.
La sécurité dépend de l'algo de chiffrement que tu utilises : tu peux utiliser de l'AES256, chiffré avec une clé connue de ta seule application.
Tu n'as pas besoin de lister les sessions actives : si tu veux forcer la déconnexion d'un utilisateur, tu peux simplement modifier son token d'authentification en base de données, ainsi quand ton application fera : User.find_by_auth_token(cookies["auth_token"]) elle ne trouvera rien et considérera que le visiteur est un invité, pas un utilisateur connecté.
Ce que tu appelles une implémentation maison, c'est ce qu'on retrouve aussi dans les frameworks, ou même dans les serveurs Web : c'est forcément "maison" quelque part. Ce n'est pas parce que c'est ta couche que les outils que tu y utilises deviennent mauvais. C'est juste automatisé et transparent quand c'est implémenté dans une couche sous-jacente. Si tu n'utilises pas de framework qui le gère, tu peux l'intégrer dans le tien.
Par défaut nativement dans PHP, tu as un cookie PHP_SESSID qu'il suffit de voler pour voler la session d'un utilisateur : ce n'est pas plus (ni moins) sécurisé qu'un autre cookie, on ne peut pas plus (ni moins !) modifier le contenu. Le cookie chiffré te donne plus de contrôle, mais c'est plus lourd à balader de requête en requête.
La sécurité dépend de l'algo de chiffrement que tu utilises : tu peux utiliser de l'AES256, chiffré avec une clé connue de ta seule application.
Tu n'as pas besoin de lister les sessions actives : si tu veux forcer la déconnexion d'un utilisateur, tu peux simplement modifier son token d'authentification en base de données, ainsi quand ton application fera : User.find_by_auth_token(cookies["auth_token"]) elle ne trouvera rien et considérera que le visiteur est un invité, pas un utilisateur connecté.
Ce que tu appelles une implémentation maison, c'est ce qu'on retrouve aussi dans les frameworks, ou même dans les serveurs Web : c'est forcément "maison" quelque part. Ce n'est pas parce que c'est ta couche que les outils que tu y utilises deviennent mauvais. C'est juste automatisé et transparent quand c'est implémenté dans une couche sous-jacente. Si tu n'utilises pas de framework qui le gère, tu peux l'intégrer dans le tien.
Par défaut nativement dans PHP, tu as un cookie PHP_SESSID qu'il suffit de voler pour voler la session d'un utilisateur : ce n'est pas plus (ni moins) sécurisé qu'un autre cookie, on ne peut pas plus (ni moins !) modifier le contenu. Le cookie chiffré te donne plus de contrôle, mais c'est plus lourd à balader de requête en requête.