web-dev-qa-db-fra.com

Cookies vs. sessions

J'ai commencé à utiliser PHP il y a quelques mois. Afin de créer un système de connexion pour mon site Web, j'ai lu des informations sur les cookies et les sessions et leurs différences (les cookies sont stockés dans le navigateur de l'utilisateur et les sessions sur le serveur). À ce moment-là, j'ai préféré les cookies (et qui n'aime pas les cookies?!) Et j'ai juste dit: "peu importe. Je n'ai aucune bonne solution pour le stocker sur mon serveur". mon projet de baccalauréat Cependant, après avoir effectué la majeure partie de mon application, j'ai entendu dire que dans le cas particulier du stockage de l'ID utilisateur, les sessions sont plus appropriées. J'ai donc commencé à réfléchir à ce que dirais-je si le jury me demande pourquoi avez-vous utilisé des cookies au lieu de sessions? J'ai juste cette raison (que je n'ai pas besoin de stocker en interne des informations sur l'utilisateur). Est-ce suffisant comme raison ? ou c'est plus que ça?
Pourriez-vous me parler des avantages/inconvénients de l'utilisation de cookies pour conserver l'identifiant de l'utilisateur?

Merci à vous tous dans StackOverflow!

159
Nadjib Mami

Le concept stocke des données persistantes lors du chargement de pages pour un visiteur Web. Les cookies le stockent directement sur le client. Les sessions utilisent un cookie comme clé de tri, à associer aux données stockées côté serveur.

Il est préférable d’utiliser des sessions car les valeurs réelles sont masquées au client et vous contrôlez l’expiration des données et leur invalidité. Si tout était basé sur des cookies, un utilisateur (ou un pirate informatique) pourrait manipuler leurs données de cookies, puis lire les requêtes adressées à votre site.

Edit: Je ne pense pas qu'il y ait un avantage à utiliser des cookies, autre que la simplicité. Regardez les choses de cette façon ... L'utilisateur at-il une raison de connaître son numéro d'identification? En règle générale, je dirais non, l'utilisateur n'a pas besoin de cette information. Donner des informations devrait être limité sur la base du besoin de savoir. Et si l’utilisateur modifie son cookie avec un identifiant différent, comment votre application répondra-t-elle? C'est un risque de sécurité.

Avant que les sessions ne fassent fureur, j'avais essentiellement ma propre implémentation. J'ai stocké une valeur de cookie unique sur le client et mes données persistantes dans la base de données avec cette valeur de cookie. Ensuite, lors de requêtes de page, j'ai mis en correspondance ces valeurs et mes données persistantes sans laisser le client contrôler ce que c'était.

187
Fosco

Idées de base pour distinguer entre les deux.

Session:

  1. L'IDU est stocké sur le serveur (c.-à-d. Côté serveur)
  2. Plus sûr (à cause de 1)
  3. L'expiration ne peut pas être définie, les variables de session seront expirées lorsque les utilisateurs fermeront le navigateur. (actuellement, il est stocké pendant 24 minutes par défaut en php)

Biscuits:

  1. L’IDU est stocké dans un navigateur Web (c’est-à-dire côté client)
  2. Pas très sûr, car les pirates peuvent atteindre et obtenir vos informations (à cause de 1)
  3. L'expiration peut être définie (voir setcookies () pour plus d'informations)

La session est préférable lorsque vous devez stocker des informations/valeurs à court terme, telles que des variables de calcul, de mesure, d'interrogation, etc.

Les cookies sont préférables lorsque vous devez stocker des informations/valeurs à long terme, telles que le compte de l'utilisateur (de sorte que même lorsqu'il éteint l'ordinateur pendant 2 jours, son compte reste connecté). Je ne peux pas penser à de nombreux exemples de cookies car ils ne sont pas adoptés dans la plupart des situations.

103
user743234
SESSIONS ENDS WHEN USER CLOSES THEIR BROWSER,

COOKIES END DEPENDING ON THE LIFETIME YOU SET FOR IT. SO THEY CAN LAST FOR YEARS

C'est la différence majeure dans votre choix,

Si vous souhaitez que l'identifiant soit mémorisé pendant une longue période, vous devez utiliser des cookies. sinon, si vous souhaitez simplement que le site Web reconnaisse l'utilisateur pour cette visite uniquement, la session est le chemin à parcourir.

Les sessions sont stockées dans un fichier que votre serveur php va générer. Pour rappeler quel fichier correspond à quel utilisateur, php définira également un cookie sur le navigateur de l'utilisateur contenant cet identifiant de fichier de session. Ainsi, lors de leur prochaine visite, php lira ce fichier et rechargera la session.

Maintenant, php par défaut efface les sessions à chaque intervalle et la convention de nommage de la session l'expose automatiquement. En outre, les navigateurs ne conserveront pas le cookie contenant l'identifiant de session une fois le navigateur fermé ou l'historique effacé.

Il est important de noter que, de nos jours, les navigateurs prennent également en charge un autre type de moteur de stockage, tel que LocalStorage, SessionStorage et d'autres moteurs webdb, que le code javascript peut utiliser pour enregistrer des données sur votre ordinateur afin de vous rappeler. Si vous ouvrez la console javascript dans Facebook, par exemple, et tapez "localStorage", vous verrez toutes les variables que Facebook utilise pour se souvenir de vous sans cookies.

39
Zalaboza

lorsque vous enregistrez le #ID en tant que cookie pour reconnaître les utilisateurs connectés, vous affichez des données à des utilisateurs qui ne leur sont pas liés. De plus, si un tiers tente de définir des identifiants aléatoires en tant que données de cookie dans son navigateur, il sera en mesure de convaincre le serveur qu'il est un utilisateur alors qu'il ne l'est pas. C'est un manque de sécurité.

Vous avez utilisé des cookies et, comme vous l'avez dit, vous avez déjà terminé l'essentiel du projet. Par ailleurs, cookie a le privilège de rester longtemps, alors que les sessions se terminent plus rapidement. Les sessions ne conviennent donc pas dans ce cas. En réalité, de nombreux sites et services célèbres et populaires utilisent les cookies et vous permettent de rester connecté pendant une longue période. Mais comment pouvez-vous utiliser leur méthode pour créer un processus de connexion plus sûr?

voici l’idée: vous pouvez aider votre utilisation des cookies: Si vous utilisez des clés aléatoires au lieu d’ID pour reconnaître les utilisateurs connectés, d’abord, vous ne divulguerez pas vos données primaires à des utilisateurs aléatoires, et ensuite, si vous considérez le caractère aléatoire. clé assez grande, il sera plus difficile pour quiconque de deviner une clé ou d'en créer une au hasard. par exemple, vous pouvez enregistrer une clé de 40 longueurs comme celle-ci dans le navigateur de l'utilisateur:.

18
Makan Tayebi

En fait, les sessions et les cookies ne sont pas toujours des choses séparées. Souvent, mais pas toujours, la session utilise des cookies.

Il y a quelques bonnes réponses à votre question dans ces autres questions ici. Étant donné que votre question concerne spécifiquement la sauvegarde de l’UDI (ou ID) de l’utilisateur, je ne pense pas que ce soit un double des autres, mais leurs réponses devraient vous aider.

cookies vs session

Cache VS Session VS cookies?

Quelle est la différence entre une session et un cookie?

12
DOK

Personnellement, j'utilise des cookies et une session.

Les cookies ne sont utilisés que lorsque l'utilisateur clique sur la case à cocher "Remember me". Les cookies sont également cryptés et les données uniquement décrypté sur le serveur. Si quelqu'un tente de modifier les cookies, notre décrypteur est capable de le détecter et de refuser la demande.

J'ai vu tellement de sites où les informations de connexion sont stockées dans des cookies, n'importe qui peut simplement changer l'identifiant et le nom d'utilisateur de l'utilisateur dans les cookies pour accéder au compte de n'importe qui.

Merci,

7

Session et Cookie ne sont pas identiques.

Une session est utilisée pour stocker les informations des pages Web. Normalement, les pages Web n’ont pas de mémoire pour stocker ces informations. Mais en utilisant nous pouvons enregistrer les informations nécessaires.

Mais Cookie est habitué à identifier les utilisateurs. En utilisant un cookie, nous pouvons stocker les données. C'est une petite partie des données qui seront stockées dans le navigateur Web de l'utilisateur. Ainsi, chaque fois que l'utilisateur navigue sur son navigateur, il renvoie les informations relatives aux cookies au serveur pour obtenir les activités précédentes.

Crédits: Session and Cookie

2
user3824494

Les sessions vous permettent de stocker des informations individuelles, comme avec les cookies, mais les données sont stockées sur le serveur plutôt que sur le client.

1
Fahad Uddin

Une session est un groupe d'informations sur le serveur associé aux informations de cookie. Si vous utilisez PHP, vous pouvez vérifier la session. save _ path location and réellement "voir les sessions" . Un cookie est un extrait de données envoyé aux clients et renvoyé par ceux-ci. Les cookies sont souvent utilisés pour faciliter les sessions car ils indiquent au serveur quel client a géré quelle session. Il existe d'autres moyens de procéder (requête, magie, etc.), mais les cookies sont probablement les plus courants.

0
Megersa

Comme d'autres l'ont dit, les sessions sont intelligentes et présentent l'avantage de cacher les informations au client.

Mais Cookie a toujours au moins un avantage, vous pouvez accéder à vos cookies depuis Javascript (par exemple ngCookies ). Avec la session PHP, vous ne pouvez y accéder nulle part en dehors du script PHP.

0
Kamalakannan J