Aller au contenu

Sécurité avec les variables de session


etouelle

Sujets conseillés

Alors j'ai un espace admin qui utilise les variables de sessions. La connexion se fait très bien et je recupere bien les données de ma BD selon l'admin. Quand l'admin appui sur Déconnexion, la session se termine comme il se doit et je fais une redirection vers la page d'accueil pour etre sur qu'il ne se trouve plus sur une des pages reserve aux admin.

Enfin, mon probleme est que lorsque un admin se deconnecte, et puis qu'il appui quelques fois sur le bouton "back" et puis sur le bouton "refresh", il revient sur la page d'accueil avec la derniere session qu'il a precedemment ouverte. (pas tres securitaire...).

Voici les conditions de la verification du login admin (fichier constantes.php) :

if (isset($_POST['btnConnecterAdmin']))
{
je valide le formulaire et si le tout est conforme :
--------------------------------------------------------
$_SESSION['IS_ADMIN'] = $IS_ADMIN = true;
$_SESSION['RefConnexion'] = $ligne['RefConnexion'];
$tabAdmin = getInfosAdmin($ligne['RefConnexion']);
unset($_POST);
je fais la redirection ici
--------------------------
}
else if (isset($_SESSION['IS_ADMIN']) && !isset($_POST['btnDeconnexion']))
{
// ADMIN CONNECTE
$IS_ADMIN = true;
$tabAdmin = getInfosAdmin($_SESSION['RefConnexion']);

//echo "SESSION ON";
}

Donc apres une deconnexion d'un admin et apres qu'il rafraichisse quelques pages auparavant, la session lui revient comme s'il elle n'avait jamais ete interrompue.

Quelqu'un peut m'aider sur ce coup là, ca fait quelques temps que j'y suis bloqué.

Merci bien

Lien vers le commentaire
Partager sur d’autres sites

en regardant les sessions dans la doc php (gratuite) j'ai trouvé cet exemple :

<?php

// Initialisation de la session.
// Si vous utilisez un autre nom
// session_name("autrenom")
session_start();

// Détruit toutes les variables de session
$_SESSION = array();

// Si vous voulez détruire complètement la session, effacez également
// le cookie de session.
// Note : cela détruira la session et pas seulement les données de session !
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// Finalement, on détruit la session.
session_destroy();

?>

il te sera peut être utilse sinon va sur Doc php pour plus de détails!

A+

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

il faut peut etre que tu protege tes pages qui sont accessible que par les admins...

if (!isset ($_SESSION['IS_ADMIN'])) {header ('location:../erreur.php?code=acces');  }
else {}

Lien vers le commentaire
Partager sur d’autres sites

dragondz, j'ai essayé ca mais ça ne fonctionne pas pour moi. Merci pour la doc tout de même.

gontran, je fais déjà cette condition avant de charger ms pages mais le problème c'est qu'il entre dedans puisque $_SESSION['IS_ADMIN'] retrouve ca valeur apres une deconnexion + plusieurs back button jusqu'a atteindre le formulaire de connexion admin + un refresh. A noter qu'il faut appuyer sur le bouton BACK très vite sinon mon système fonctionne puisqu'il reste sur la page de connexion avec les champs vide (celle ou je fais la redirection un coup que l'utilisateur essaye de rentrer sur une page reserve aux admin).

Je ne sais pas si c'est la meilleure chose a faire, mais je crois que je vais essayer de developper mon site pour que lorsque l'utilisateur (connecter en client ou admin) appui sur le bouton "Back", que ca session s'arrete et se detruit automatiquement et qu'il soit redirige vers la page de connexion.

Qu'en pensez-vous? Je sais qu'un site bancaire est monter comme cela.

Lien vers le commentaire
Partager sur d’autres sites

Je te conseil de le redirigé vers une page deconnexion.php qui supprimera toutes les sessions et tous les possibles cookies.

Ensuite, sur les pages admin, tu vérifies si la session pour savoir s'il est admin ou pas, sinon, tu renvois vers la page d'accueil.

Je l'utilise avec ce principe, et cela marche très bien :)

Sébastien

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...