2017-06-11 6 views
4

J'utilise Codeigniter 3 pour mon application et pour plus de sécurité je veux fournir aux utilisateurs une option pour détruire toutes ses sessions.Détruire toutes les sessions de l'utilisateur spécifique

Pourquoi? Parce que l'utilisateur peut avoir plusieurs sessions actives lorsqu'il est connecté sur différents appareils. Si un appareil ou un compte est piraté, l'utilisateur doit avoir la possibilité de détruire toutes ses sessions actives et le compte/appareil piraté est obligé de se déconnecter par l'application CI.

Avec Codeigniter et la configuration de sess_time_to_update, ce n'est pas si simple. Parce qu'après un certain temps, la session sera régénérée avec un nouvel identifiant de session.

Destroying a specific session in Code Igniter est seulement la moitié de la solution, car lors de la régénération de la session, la colonne ID utilisateur ne sera pas remplie avec l'ID utilisateur.

L'objectif en bref: CI a besoin d'une fonction pour trouver toutes les sessions basées sur un ID utilisateur ou comment ajouter l'ID utilisateur aux sessions après son être automatiquement régénéré par config sess_time_to_update

Nous vous remercions de vos astuces et votre aide

+1

Je pense que vous devez créer un gestionnaire de session personnalisé et enregistrer les sessions dans une base de données ... qui va faire avancer les choses –

+0

Je pense que vous pouvez ajouter le drapeau dans la base de données lorsque l'utilisateur se déconnecte chaque fois que l'utilisateur essaie de se connecter à partir d'autres appareils –

Répondre

1

Idéalement, vous voudriez créer vous-même la fonction personnalisée. codeignighter est comme bootstrap d'une certaine manière car codeignighter est php et bootstrap est css. code PHP simple, oui, il est pratique d'avoir des fonctions PHP dans une bibliothèque, mais la plupart des codeurs PHP le font de toute façon. Personnellement, je ne partage pas mes noms de fonctions personnalisées car c'est un risque de sécurité. Mais le fait de garder les sessions en vie trop longtemps constitue également un risque pour la sécurité. Pour chaque utilisateur se connecter, il y a un cookie de session dans le tableau $ _SERVER. Ce que vous devez faire est de stocker ces cookies dans une table db puis de déplacer ces entrées cookie vers une cue de suppression (qui serait une autre table) puis utiliser Java pour invoquer une commande (à intervalles de temps) pour voir si le cookie est dans la queue de suppression, le cas échéant Il désinitialiser le cookie par la commande:

setcookie("PHPSESSID","",time()-3600,"/"); 
////then kick them out: 
session_destroy(); 
header('Location: index.php'); 

exit(); 

sur un de mes systèmes, je suis venu avec un système de cookies différent, ses à base de la connexion et d'autres variables client . S'il ne voit aucune des vérifications (cookie, adresse IP, nom d'hôte du client et autres) analysées à partir de là, il ajoutera l'adresse IP non concordante à une table (pour l'audit d'administration), puis ajoute cette adresse IP au refuser les adresses IP dans le pare-feu, puis les redirige vers le site Web du FBI. J'ai aussi sur ce serveur web un code spécial dans la configuration apache qui n'accepte pas les connexions vpn afin que les pirates qui pensent pouvoir se cacher derrière un VPN, ils ne peuvent même pas accéder au serveur. LOL)