IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] [e-commerce] Où enregistrer les paniers non encore validés?


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    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!

  2. #2
    Invité
    Invité(e)
    Par défaut
    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'

  3. #3
    Invité
    Invité(e)
    Par défaut
    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?

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    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.

  5. #5
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    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.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci pour vos précieuses réponses!

    Je pense que je vais retenir la solution suivante :

    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

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    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.

  9. #9
    Invité
    Invité(e)
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/03/2013, 10h43
  2. Changement valeur cellule non encore validée
    Par cazadeis dans le forum VB.NET
    Réponses: 2
    Dernier message: 21/10/2010, 10h19
  3. [AC-2003] rajouter un enregistrement par jour non encore présent dans la table.
    Par yupyupxav dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/10/2010, 06h08
  4. [AC-2002] Faire une lettre de rappel pour les factures non encore payées
    Par antezi dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/04/2009, 16h40
  5. commande non encore validé
    Par fatjoe dans le forum 1&1
    Réponses: 1
    Dernier message: 07/08/2008, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo