Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2006, 20h52   #1
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Par défaut [Sécurité] [e-commerce] Où enregistrer les paniers non encore validés?

Bonjour,

Je suis en train de programmer mon premier site web e-commerce en PHP / MySQL. J'utilise des sessions pour tracker mes utilisateurs, déjà inscrits ou pas. Je voudrais créer un panier temporaire pour stocker les commandes des utilisateurs avant qu'ils ne valident réellement ce panier. Ils peuvent quitter leur navigateur et revenir plusieurs jours après pour valider leurs choix précédents.

Que me conseillez-vous pour sauvegarder ce panier temporaire? Un cookie? Une table MySQL? Une variable tableau? Autre chose?

Merci!

webrider.

EDIT : j'héberge le site sur mon serveur, j'ai donc la possibilité de sauvegarder dans des fichiers!
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 21h34   #2
Membre actif
 
Avatar de yotsumi
 
Julien L
Inscription : mars 2005
Messages : 187
Détails du profil
Informations personnelles :
Nom : Julien L
Âge : 23
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mars 2005
Messages : 187
Points : 154
Points : 154
Envoyer un message via MSN à yotsumi
Désolé ma réponse sera succinte par manque de temps.

Je ne vois qu'un seule bonne solution pour ton application : stocker dans un cookies un identifiant unique qui fera la liaison avec une table mysql contenant les éléments du panier de l'utilisateur.

Bien entendu il ne faudra pas laisser l'id directement acceccible ( et donc directement modifiable ) : un système de saltz, de cryptage sera indispensable.
Voir plus simple : tu stock un cookies $ID_DU_PANIER-$CLE_ALEATOIRE , en php tu récupère les deux valeurs et tu forme une requete mysql du tyle : SELECT * FROM table WHERE id='$id' AND cle='$cle'
yotsumi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2006, 21h02   #3
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Un système de salz? Je ne connais pas mais je suis preneur, on en apprend tous les jours n'est-ce pas?

Donc au final je n'ai pas le choix que de stocker les paniers temporaires dans une BDD, je posais cette question pour justement éviter ça et gagner ce précieux temps d'accès... Certes pas long mais multiplié par un bon nombre d'utilisateurs ça devient important.

Autre question, quelle est la durée de vie des variables session de PHP?

Merci!

webrider

EDIT sécurité : dites-moi si je me trompe... Les articles contenus dans un panier temporaire ne sont pas fort sensibles, pourquoi du cryptage?
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 11h30   #4
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par webrider
Un système de salz? Je ne connais pas mais je suis preneur, on en apprend tous les jours n'est-ce pas?

Donc au final je n'ai pas le choix que de stocker les paniers temporaires dans une BDD, je posais cette question pour justement éviter ça et gagner ce précieux temps d'accès... Certes pas long mais multiplié par un bon nombre d'utilisateurs ça devient important.

Autre question, quelle est la durée de vie des variables session de PHP?

Merci!

webrider

EDIT sécurité : dites-moi si je me trompe... Les articles contenus dans un panier temporaire ne sont pas fort sensibles, pourquoi du cryptage?
Elle a la durée de vie que tu lui donnes. Plus précisement, parametre est configurable. Regarde la doc parce que ça date de longtemps la dernière fois que je m'étais intéressé. Dans php.ini il y a plusieurs éléments qui font référence à la durée d'une session mais une seul agit réellement. Fait le test.

Pour le cryptage du contenu du panier ? Personnellement, je n'y vois pas d'interêt. Tant que le voleur de session peut pas acheter sur le compte de l'autre personne il y a pas de souci. Si dans un magasin une personne vole ton chariot il va quand même aller devoir payer à la caisse avec son argent.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 16h45   #5
Membre confirmé
 
Avatar de NeHuS
 
Inscription : décembre 2004
Messages : 343
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 343
Points : 267
Points : 267
La durée de vie est modifiable comme dit plus haut , par contre si l'utilisateur ferme le browser , la session est terminée.

Ce que tu pourrais faire c'est aussi stocké dans un cookies l'id des articles et la qté . Tu tests bien entendu la quantité ( > 0 && < x ) et lorsque tu recuperes les valeurs de ton cookies tu verifies que les id existent bien.

Voila si tu verifies sur le serveur ces deux informations ( qté & id) je pense que c'est suffisant. A la limite lie le cookie a l'id du client comme ça si quelqu'un d'autre se connecte sur le poste et va sur ton site il n'aura pas les articles du MR

D'autant plus que si un petit malin change les valeurs du cookies , ben tanpis pour lui : l'article changera et la qté changera c'est tout ce qu'il pourra faire. ( plus ce qu'a dit berceker )

Sinon une solution comme yotsumi . Si tu veux vraiment un truc secure mets en le moins possible sur le poste client ; mets en le moins possible dans le cookies.

Juste un id qui est lié a une table temp et au login... bcp de vent pour pas grand chose :p a mon humble avis
NeHuS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 17h00   #6
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Je dirais que le panier doit être stocké dans une table de façon temporaire. Ce panier est associé à un client identifié via un cookie possedant un identifiant. qui peut être couplé à différent parametre crypté. ip+navigateur+os+... ceci réduira le risque de vole de panier qui ne sert à rien pour le pirate.
Pourquoi ne pas placer l'article dans le cookie. Trop manipulable et la taille limité du cookie.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 08h28   #7
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Merci pour vos précieuses réponses!

Je pense que je vais retenir la solution suivante :

Citation:
Un cookie avec un id et une clé aléatoire
Ce couple id-clé va me permettre d'aller rechercher les articles dans une BDD
Comme vous dites si bien, que ferait un pirate avec un panier qu'il devrait payer lui-même!

Le paiement sécurisé se fait sur un site externe, je ne stocke même pas les numéros de carte de crédit.

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 09h38   #8
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Par contre attention. je viens d'y penser et de m'en souvenir. Faire en sorte qu'un pirate ne puisse pas placer des produits dans le panier de quelqu'un d'autre et que la personne effectue l'achat. Le pirate change l'adresse final en gros les données transmis sont faussées. Je me rappelle plus trop dans quel sens cela se faisait mais en cour il y avait se cas de figure.

Je reviens un peut au début. Il y a aussi une raison pour que les autres personne ne puisse pas voir le panier de quelqu'un d'autre. Admettons que c'est une erreur de dev pour x raison. Premierement, si c'est un site sensible genre dans le x les client voudrait effectuer leur achat en toute sécurité sans que l'un puisse savoir ce que l'autre achete s'il est ciblé. Maintenant, imaginons que suite à l'erreur l'un effectue l'achat de l'autre les enregistrements temporaires vont, normalement, être effacé. Ce qui aura pour conséquence qu'il y en aura un qui va se retrouver avec un panier vide. S'ils a bourré son chariot il ne reviendra pas. Perte d'un client.
Donc même si à première vue cela ne présente pas un grand danger le vole de panier ça peut quand même mener à des situations désagréable. Donc c'est d'ajouter un detecteur de comportement anormale. Comme j'ai cité plus haut, c'est d'y ajouter le plus d'élément possible pour identifier une personne. ip,os,navigateur, ... Si l'un des éléments change c'est qu'il y a quelque chose qui ne va pas.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 08h12   #9
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Oui c'est vrai tout ça est bien possible! Je vais étudier tes propositions pour les intégrer dans mon suivi de panier, je vais aussi utiliser SSL pour accroître encore la sécurité.

@++

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h19.


 
 
 
 
Partenaires

Hébergement Web