PHP - utiliser Cookies
stephweb13
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
13stephweb13 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
13stephweb13 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me permet de vous demander un renseignement SVP,
car j'ai lu pas mal de tutos sur les cookies, mais je comprend toujours pas trop comment bien y sécuriser.
Pour le moment j'ai ces codes :
Dans la page login.php :
Dans la page logout.php :
ça fonctionne, mais on m'a dit que ça pouvais être mal sécurisé (sans trop m'expliquer le pourquoi).
Dois-je ajouter dans le header de mon Admin une vérification en plus?
par exemple:
Merci beaucoup
Je me permet de vous demander un renseignement SVP,
car j'ai lu pas mal de tutos sur les cookies, mais je comprend toujours pas trop comment bien y sécuriser.
Pour le moment j'ai ces codes :
Dans la page login.php :
<?php if(isset($_POST['remember'])) { // si l'utilisateur coche la case à cocher setcookie("cookname", sha1($_SESSION['Auth']['pseudo'] . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, "/", '', false, true); }
Dans la page logout.php :
<?php setcookie("cookname", sha1($_SESSION['Auth']['pseudo'] . $_SERVER['REMOTE_ADDR']), time() - 3600 * 24 * 3, "/", '', false, true); unset($_COOKIE['cookname']);
ça fonctionne, mais on m'a dit que ça pouvais être mal sécurisé (sans trop m'expliquer le pourquoi).
Dois-je ajouter dans le header de mon Admin une vérification en plus?
par exemple:
<?php if(isset($_COOKIE['cookname']) && !isset($_SESSION['Auth'])) { ...
Merci beaucoup
A voir également:
- PHP - utiliser Cookies
- Utiliser chromecast - Guide
- Supprimer les cookies - Guide
- Utiliser iphone comme webcam - Guide
- Easy php - Télécharger - Divers Web & Internet
- Utiliser tablette comme deuxieme ecran - Guide
4 réponses
Ce que tu fais n'est pas très sécurisé car en connaissant comment tu crées ton cookie, on peut le modifier pour avoir accès au compte d'une autre personne. En effet il suffit que je fasse depuis mon site un sha1 du pseudo d'une personne cible avec son IP et je peux me connecter sur son compte. Le mieux est de générer un cookie avec en valeur une clé unique (unique_id) par exemple, et de stocker en base de donnée le pseudo auquel il correspond comme ça on ne peut pas trouver les cookies des autres utilisateurs (sauf avec beaucoup de chance)
L'idéal reste quand même d'utiliser les Sessions, car les données sont stockées coté serveur et non client.
Bonsoir.
Merci pour vos réponses.
En faite, mon but est que l'utilisateur puisse cocher une case à cocher "rester connecter" lors du login.
Et j'ai fait plein de recherches, et je n'ai pas trouvé grand chose.
On peut y faire avec les session? comment on fait? merci
Merci pour vos réponses.
En faite, mon but est que l'utilisateur puisse cocher une case à cocher "rester connecter" lors du login.
Et j'ai fait plein de recherches, et je n'ai pas trouvé grand chose.
On peut y faire avec les session? comment on fait? merci
Ah, d'accord, dans ce cas, 2 cookies a longue durée de vie, avec l'un le pseudo (pour retrouver l'utilisateur) et l'autre, avec un hash (MD5 ou SHA, par exemple) du navigateur utilisé (user-agent) et quelques autres informations, histoire de rendre le tout difficilement copiable/usurpable, serait envisageable.
Attention toutefois, on ne fait le hash qu'une fois et on ne revérifie pas derrière: je peux changer d'IP toutes les minutes par rotation de proxy, et faire changer (voire retirer) mon user-agent (automatiquement ou pas) via une extension anti-tracking. Pourtant je reste la même personne avec le même compte.
Bonsoir.
Ok merci.
Dans la page Login je fait ceci dans le traitement :
Et dans le header de l'admin je rajoute ceci :
C'est bien comme ceci qu'il faut faire? (notamment avec le user_agent)?
Merci
Ok merci.
Dans la page Login je fait ceci dans le traitement :
<?php
if(isset($_POST['remember'])) {
setcookie("cookname", sha1($_SESSION['Auth']['pseudo'] . uniqid() . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, "/", '', false, true);
setcookie("cookmail", sha1($_SESSION['Auth']['mail'] . uniqid() . $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, "/", '', false, true);
}
Et dans le header de l'admin je rajoute ceci :
<?php // Sécurité - Cookies. Si un des deux cookie est absent -> Déconnecté ! if(isset($_COOKIE['cookname'])) { if(!isset($_COOKIE['cookmail'])) { header('Location: logout.php'); exit(); } } elseif(isset($_COOKIE['cookmail'])) { if(!isset($_COOKIE['cookname'])) { header('Location: logout.php'); exit(); } }
C'est bien comme ceci qu'il faut faire? (notamment avec le user_agent)?
Merci