Dans PHP, la session est utilisée pour enregistrer des données entre les utilisateurs et les serveurs. La fonction session_start () démarre une session. Lorsque l'utilisateur se connecte, PHP créera un ID de session pour l'utilisateur sur le serveur et stockera les données pertinentes sur le serveur, tandis que le client stocke l'ID de session via des cookies.
La chose la plus importante lors du traitement de la sortie des utilisateurs est d'effacer toutes les données de la session, ce qui aide non seulement à protéger la confidentialité des utilisateurs, mais aussi à empêcher le détournement de la session et d'autres problèmes de sécurité.
Lorsque l'utilisateur sort, Session_Destroy () est généralement appelé pour détruire la session, mais cela n'efface pas complètement toutes les données de session. En fait, session_destroy () détruit simplement le fichier de session et ne peut pas effacer immédiatement les données de la variable hyperglobale $ _Session .
Pour effacer complètement les données de session, suivez ces étapes:
Détruisez les données de session: utilisez session_unset () pour effacer toutes les données stockées dans $ _SESSION .
Détruisez le fichier de session: utilisez session_destroy () pour détruire la session en cours.
Ce qui suit est le code PHP spécifique pour réinitialiser la session lorsque l'utilisateur sort:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// démarrer session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// Effacer tout session données</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_unset</span></span><span>();
</span><span><span class="hljs-comment">// détruire session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span><span><span class="hljs-comment">// supprimer session ID Stocké cookie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ini_get</span></span><span>(</span><span><span class="hljs-string">"session.use_cookies"</span></span><span>)) {
</span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-title function_ invoke__">session_get_cookie_params</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">setcookie</span></span><span>(</span><span><span class="hljs-title function_ invoke__">session_name</span></span><span>(), </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>() - </span><span><span class="hljs-number">42000</span></span><span>, </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"path"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"domain"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"secure"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"httponly"</span></span><span>]);
}
</span><span><span class="hljs-comment">// Rediriger vers la page de connexion ou la page d'accueil</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: login.php"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Session_start () : Démarrez une session, si elle n'est pas démarrée, cette étape est requise.
session_unset () : efface toutes les données dans la variable hyperglobale $ _Session . Il s'agit de la première étape pour s'assurer que les données de session de l'utilisateur sont supprimées.
Session_Destroy () : Détruisez le fichier de session, mais notez que cela n'efface pas la variable $ _Session , nous devons donc également appeler session_unset () pour effacer les données.
Supprimer les cookies de session : si PHP utilise des cookies pour stocker les ID de session, nous devons également supprimer explicitement les cookies stockés sur le client pour nous assurer que le navigateur de l'utilisateur n'enregistre plus l'ID de session. En fixant le temps d'expiration des cookies au temps passé, l'effet de la suppression des cookies est obtenu.
Redirection : Enfin, redirigez l'utilisateur vers la page de connexion ou la page d'accueil via la fonction d'en-tête () pour terminer l'opération de sortie.
La suppression des cookies de session est une mesure de sécurité courante, en particulier après les opérations sensibles. Même si l'utilisateur peut ne pas être en mesure d'accéder directement aux données de session après la fermeture du navigateur, un attaquant peut utiliser l'ID de session pour restaurer la session s'il est enregistré dans un cookie. Par conséquent, s'assurer que les cookies de session sont supprimés est une étape nécessaire.
Protection de détournement de session: Pour empêcher le détournement de session, nous pouvons utiliser Session_Regenerate_id (true) pour générer un nouvel ID de session lorsque l'utilisateur se connecte, en s'assurant que l'ancien ID de session ne peut pas être forgé.
HTTPS Secure Transport: Utilisez HTTPS pour protéger les données de session utilisateur pour empêcher les sessions d'être volées pendant la transmission.
Nettoyez régulièrement les séances d'expiration: définissez un mécanisme de délai d'expiration raisonnable et contrôlez le temps d'expiration de la session en configurant la session de PHP.gc_maxlifetime et nettoyez régulièrement les séances qui ne sont plus utilisées.