2009-07-13 16 views
2

Je veux intégrer un panier d'achat dans mon site. Le chariot doit être tel qu'il se réinitialise dès que l'utilisateur se déconnecte de l'application. Cela peut être réalisé via des sessions ou en utilisant les tables de base de données.Mise en place du panier

Ce qui devrait être préféré sur les deux ci-dessus? Existe-t-il des trous de boucle de sécurité si cela est géré via des sessions?

+0

Les sessions sont assez sécurisées, mais pas aussi évolutives que les informations de session sauvegardées dans une base de données. Un support de base de données est peu susceptible d'être aussi performant que dans l'état de session de processus. Pour combien d'utilisateurs construisez-vous votre application? Avez-vous besoin d'une ferme Web? –

+0

Pouvez-vous définir "déconnecter", cela signifie-t-il, ferme le navigateur, ou clique sur un bouton de déconnexion, si ce dernier, qu'est-ce que cela signifie si l'utilisateur n'est pas connecté, peut-il ajouter des choses à un panier? connecté? –

Répondre

0

Je ne vois pas pourquoi HttpSessions augmenter votre exposition à la sécurité - si votre session est piratée, alors probablement votre accès à la base de données.

Si vous avez vraiment l'intention que le panier de votre utilisateur soit transitoire alors clairement votre HttpSession est suffisante. Les serveurs d'application de mise à l'échelle disposent généralement de capacités de réplication de session pour gérer les défaillances de serveur individuelles.

Je suis sceptique sur le long terme qu'un chariot aussi volatile sera toujours ce que vous voulez, je trouve très pratique de naviguer autour d'Amazon et d'assembler mon panier, puis laissez-le juste pour le moment. Comme il n'est probablement pas beaucoup plus difficile de conserver votre panier dans une base de données, j'y réfléchirais probablement.

0

Je voudrais utiliser des sessions - pas de point de colmater votre base de données sur les données qui seront détruites lors de la déconnexion.

De plus, les sessions sont assez sécuritaires à utiliser.

2

Dans le département de la sécurité, aucun des deux n'est préférable à l'autre. Vous devez comprendre que les deux concepts sont essentiellement des "sessions", mais que l'un est géré dans le domaine d'application, l'autre est géré dans le domaine DB.

sessions appdomain:

  • plus rapide (sans déclenchement tour à la base de données)
  • Non évolutive
  • Enclin à des problèmes de concurrence sur les fermes de serveurs
  • sessions seront perdues sur le serveur redémarrage

Sessions de base de données:

  • Plus lent (allers-retours à la DB pour chaque demande)
  • plus facile à l'échelle sur serverfarms
  • Les sessions seront maintenues ouvertes sur le serveur redémarre

Vous devriez considérer le nombre d'utilisateurs sur votre site . Si vous regardez beaucoup, vous aurez probablement besoin de plusieurs serveurs, auquel cas les sessions de base de données seront votre meilleur pari, si vous resterez avec un serveur Web/serveur de base de données, alors les sessions d'appdomain iront bien.