|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() |
Bonjour à tous,
En fait je suis en train de réadapter un site internet commercial. Pour le moment l'authentification de l'utilisateur se fait par les cookies, et pour ce qui est des informations utiles au site elle se fait par l'intermédiaire des sessions PHP. Je voudrais déjà savoir déjà quelle la solution la plus sécurisée entre les cookies et les sessions pour s'identifier auprès du site ? Ensuite je créé un panier dès le premier accès au site, même si il n'est pas connecté, donc si j'ai bien compris c'est là que les sessions entre en jeu. Pour que je puisse reconnaitre une personne d'une autre sans qu'il ai besoin de se connecter, c'est bien ça ? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 818 ![]() |
Les sessions sont plus sûr que les cookies
les cookies peuvent être volés, ou modifiés... Le tout quand on utilise un cookie, c'est de vérifier si il n'y a aucune faille XSS sur le site, si ton site contient des failles XSS, n'importe quel hacker, parviendra à te voler facilement les comptes de tes clients. Pour reconnaitre un utilisateur lors de la première connexion sans devoir se logger, ce sont les cookies qu'il faut utiliser non les sessions. |
|
00
|
|
|
#3 |
|
Membre habitué
![]() |
Donc ce que je peux faire, c'est que tant que la personne ne se connecte pas, un ID temporaire lui est donné qui sera enregistré dans un cookie, ainsi il peut utiliser et remplir son panier.
Ensuite si il veut se connecter, à ce moment je créé par dessus l'ancien cookie un nouveau cookie avec seulement l'identifiant, le mot de passe sera stocké sur le serveur. J'utiliserai constamment les sessions, avec une variable qui définira si l'utilisateur est connecté ou non. Au niveau sécurité ça peut aller non ? |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 818 ![]() |
Oui c'est une sécurité simple mais qui fonctionne très bien.
Je n'ai pas d'url à donner comme ça, mais il existe des tutoriels sur la sécurité des sessions qui pourront peut être t'inspirer Mais pour le panier virtuel temporaire, tu peux utiliser les sessions plutot que les cookies... |
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Je dirais... les 2 !
* Cookie = Fichier sur le poste client (donc volable, modifiable, etc...) contenant des données que tu stockes pour les retrouver. * Session = Fichier sur le serveur (donc pas volable, pas modifiable, etc...) contenant des données que tu stockes pour les retrouver. Bref, c'est la meme chose... a ceci pret que si retrouver le fichier de cookie est simple : Il suffit d'utiliser celui présent sur le poste client. Retrouver le fichier de session, quand tu as plusieurs clients sur le site en meme temps, necessite de pouvoir l'identifier de maniere unique... c'est le but de l'ID de session. Donc il faut que le client envoie au serveur l'ID de session pour que le serveur retrouve le bon fichier "Session" a utiliser. Cette ID de session, comment le client va t'il la conserver ? 2 solutions : * Utiliser un cookie ^^ Ben oui, c'est bete mais c'est ce qui se fait en général. L'ID de session est donc volable et modifiable, mais c'est deja un peu plus difficile * Passer l'ID de session dans l'URL de la page... ca fait des URL super longues, encore plus facilement piratables/modifiables/exploitables qu'en passant par des cookie... bref, a oublier si on peux faire autrement. Donc au final, il faut utiliser des sessions... et un cookie contiendra l'ID de session (le cookie est géré de maniere automatique par session_start() en principe)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
Ok je pense que je vais faire ça. J'utiliserai le cookie pour stocket l'ID de la session.
Par contre j'aurais une dernière question, quand sur un site il propose de se connecter automatiquement à la prochaine visite, en fait il enregistre l'identifiant et le mot de passe dans un cookie non ? C'est pas super sécurisé si ça se passe comme ça. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
non, il fait quand il y a ce genre de case, il change juste la date d'expiration du cookie qui stocke l'ID de session.
Un cookie peut avoir comme date d'expiration : * la "session" (ce qui prete a confusion, on entend par là la periode entre la définition du cookie et la fermeture du navigateur web) * une date spécifiée (15mn, 1jour, 6 mois, 99ans, etc...) Donc quand tu coches "se souvenir de moi", ca fait en sorte que le cookie contenant l'ID de session reste présent sur ta machine apres être parti du site. C'est "moins" sécurisé en effet... mais c'est tres chiant d'avoir a retaper son mot de passe tout les jours, c'est a toi de le voir avec tes utilisateurs ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() |
Ok, donc quand on utilise les sessions on peut la prolonger pour qu'elle ne se termine pas après l'arrêt du navigateur ?
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() |
Ok merci pour lien.
Mais alors il y a quelque chose que je ne comprends pas à ce moment. Les données de la session sont stockées sur le serveur, mais si par exemple nous prolongeons la durée à 1 jour, qu'une personne se connecte, créé la session, puis se deconnecte. Le lendemain le serveur saura quel donnée lui remettre pour sa prochaine connection ? Ou est-ce que ces données sont stockées sur l'ordinateur du client ? |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Sur le client la seule chose qui est stockée c'est un COOKIE contenant un ID de session qui permet au serveur de retrouver les infos sur le disque du serveur
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com