[PHP] Un mot de passe dans une session

Résolu/Fermé
Utilisateur anonyme - 31 août 2009 à 21:53
 Utilisateur anonyme - 2 sept. 2009 à 22:12
Bonjour à tous !

Je vous explique :
J'ai créer sur mon site un espace membre protéger par logins/passwords, à peut pret identique à celui de ccm, avec des droits pour certains utiliateurs. Pour les reconnaitre et éviter qu'ils se connectent à chaque foi, j'ai pris le système de sessions, où est stocké login et mot de passe. A chaque page on regarde si le sha1 du mot de passe de la session est le même que le mdp stocké pour ce login.

Seulement voila; ça ne sert à rien de crypter les mots de passe pour les stocker avec des sha1 et des salts si il sont stockés bêtement et en clair dans une session. Je ne peux pas non plus le crypter dans le cookie car :
- Si le mot de passe est stocké en clair dans le cookie session, un pirate prend le mot de passe qu'il contient et se connecte,
- Si le mot de passe est crypté, il reproduit le cookie sur son ordinateur et peut accéder au contenu privé...

Alors comment faire pour utiliser les sessions (et donc pour pas se connecter à chaque page), ne pas stocker les mots de passes dans les sessions et que ce soit sûr ?

Merci d'avance ;-)
A voir également:

11 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 août 2009 à 22:22
le principe de l'identification et de la zone membre avec les sessions:

- tu as une page de saisie de identif et mot de passe cette page apelle un script de login qui verifie si corrects par rapport a ceux stockés dans une BDD par exemple)

si ok ça ouvre la session par session_start();

et ça stocke une valeur dans une variable de session

$_SESSION['ma_var']="toto";

et ça renvoie sur la page d'accueil de la zone membre header('Location:accueil.php')

ensuite en début de CHAQUE page de la zone membre tu mets:

<?php
session_start();
if(!isset($_SESSION['ma_var']) || $_SESSION['ma_var']!="toto"){

header('Location:index.php'); si session non ouverte, on aiguille vers la page de saisie identif/mot de passe

}else{

//la partie html de la page

}
0
Utilisateur anonyme
31 août 2009 à 22:30
Merci Alain pour cette réponse, mais peut-être ne me suis-je pas exprimer clairement...

Je crois me souvenir que les sessions ne sont autres que des cookies stockés en local.

Ce dont j'ai peur c'est qu'un pirate s'introduise dans l'ordinateur du visiteur alors que ce dernier est connecté sur le site. Il a donc sur sont ordinateur 2 cookies : 1 avec le login et 1 avec le mot de passe. Le pirate n'a plus qu'à récupérer ces cookies pour entrer sous l'identité de notre visiteur.

Comment éviter ça ?
Merci d'avance
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 975
31 août 2009 à 22:44
faux.

sessions et cookies sont deux choses differentes.


il ne faut pas stocker de mot de passe dans les cookies qui eux sont stockés sur l' ordinateur du visiteur.

Les sessions sont comme des cookies mais sont sur le serveur seulement et la sessions disparait lorsque l' utilisateur ferme son navigateur.


On associe alors le cookie a la session, mais le cookie est juste la pour rappeler la session, il ne contient pas de mot de passe.
0
Utilisateur anonyme
31 août 2009 à 22:51
Donc on peut sans danger mettre des mots de passe dans les sessions ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 sept. 2009 à 14:44
Tu ne mets pas le mot de passe dans la variable de session

la valeur que tu y mets sert juste a vérifier que la session est ouvert tu peux y mettre n'importe quoi

identifiant et mot de passe sont vérifies par le script d'ouverture de session
0
Utilisateur anonyme
1 sept. 2009 à 16:47
Mais alors commet je fais pour savoir lequel de mes membre est connecté ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 sept. 2009 à 16:56
Alors tu peux mettre le pseudo en variable de session
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 975
1 sept. 2009 à 18:23
Savoir quel membre est connecté, c' est une autre chose, qui va voir depuis combien de temps la session d' un membre qui est sur le serveur existe.

Les mots de passe, tu t' en fous royalement, puisqu' ils sont la bdd, personne les vois.
0
Utilisateur anonyme
2 sept. 2009 à 15:10
Merci à tous les deux pour vos réponses,

Donc, pour conclure, dès que qqn ce connecte, on compare le cryptage mdp/bdd et le pseudo, si c'est bon, on créé une session uniquement avec le pseudo; puis à chaque fois que le visiteur arrive sur une page, on regarde s'il existe une session et si session=bdd, on peut afficher les privilèges. Il n'y pas de gros risque pirate pour cette technique ?
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 975
2 sept. 2009 à 16:36
Si piratage il y a , ca sera a cause d 'une faille ailleurs dans ta page.

l' utilisateur retre son mdp et pseudo


loading.....


dans la bdd, comparaison, deja si le pseudo existe, si oui, alors comparaison du mdp (crypté en md5, mais lui sait le traduire), si le mot de passe est bon, alors le serveur crée chez lui une session.

fais juste un
<?php
$_session start
echo 'votre pseudo';
echo $_session['pseudo'];
?>

Tu sauras tout de suite si ta session existe.

Desolé j' ai fait deux ou trois erreur d' ecriture php mais tu as la formule, tu n' a plus qu' az corriger
0
Utilisateur anonyme
2 sept. 2009 à 22:12
Et bien merci beaucoup graffx et Alain pour votre aide !! Voila qui résolue mon problème !

A bientôt et encore merci !
0