J'ai commencé à utiliser PHP il y a quelques mois. Dans le but de créer un système de connexion pour mon site Web, j'ai pris connaissance des cookies et des sessions et de 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: "ça va? mon projet de diplôme de licence. Cependant, après avoir fait la majeure partie de mon application, j'ai entendu dire que pour le cas particulier de stockage de l'identifiant de l'utilisateur, les sessions sont plus appropriées. J'ai donc commencé à réfléchir à ce que je dirais si le jury me demandait 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).? 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 pour vous tous dans StackOverflow!
Réponses:
Le concept stocke des données persistantes sur les chargements de pages pour un visiteur Web. Les cookies le stockent directement sur le client. Les sessions utilisent un cookie comme une sorte de clé, à 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 pour le client et vous contrôlez le moment où les données expirent et deviennent invalides. Si tout était basé sur des cookies, un utilisateur (ou un pirate informatique) pourrait manipuler ses données de cookies et ensuite lire des requêtes sur votre site.
Edit: Je ne pense pas qu'il y ait d'avantage à utiliser des cookies, autre que la simplicité. Regardez les choses de cette façon ... L'utilisateur a-t-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 ces informations. La diffusion d'informations doit être limitée sur la base du besoin de savoir. Que faire si l'utilisateur change son cookie pour avoir un identifiant différent, comment votre application va-t-elle réagir? C'est un risque pour la 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 stocké mes données persistantes dans la base de données avec cette valeur de cookie. Ensuite, sur les demandes de page, j'ai fait correspondre ces valeurs et j'ai eu mes données persistantes sans laisser le client contrôler ce que c'était.
la source
session_write_close();
lorsque vous en avez besoin. Rouler votre propre identifiant unique et faire correspondre avec des cookies simples n'a pas été si difficile, et garde toutes les pages jolies et accrocheuses.Idées de base pour faire la distinction entre ces deux.
Session:
Biscuits:
La session est préférable lorsque vous avez besoin de stocker des informations / valeurs à court terme, telles que des variables pour le calcul, la mesure, l'interrogation, etc.
Les cookies sont préférables lorsque vous avez besoin de stocker des informations / valeurs à long terme, telles que le compte de l'utilisateur (de sorte que même lorsqu'ils éteignent l'ordinateur pendant 2 jours, leur compte sera toujours connecté). Je ne peux pas penser à de nombreux exemples de cookies car ils ne sont pas adoptés dans la plupart des situations.
la source
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 voulez que l'identifiant soit mémorisé pendant longtemps, vous devez utiliser des cookies; sinon, si vous voulez simplement que le site Web reconnaisse l'utilisateur uniquement pour cette visite, les sessions sont la voie à suivre.
Les sessions sont stockées dans un fichier que votre serveur php générera. Pour se rappeler quel fichier est pour quel utilisateur, php placera également un cookie sur le navigateur de l'utilisateur qui contient cet identifiant de fichier de session afin que lors de leur prochaine visite, php lira ce fichier et rechargera la session.
Maintenant, php efface par défaut les sessions à chaque intervalle, et la convention de dénomination de la session la fait expirer automatiquement. De plus, les navigateurs ne conserveront pas le cookie contenant l'identifiant de session une fois que le navigateur est fermé ou que l'historique est effacé.
Il est important de noter que de nos jours, les navigateurs prennent également en charge un autre type de moteurs de stockage tels que LocalStorage, SessionStorage et d'autres moteurs Webdb que le code javascript peut utiliser pour enregistrer des données sur votre ordinateur afin de se souvenir de vous. 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.
la source
Réponse courte
Règles classées par priorité:
Source: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Réponse détaillée
Biscuits
Séances
Le choix approprié
Les sessions utilisent un cookie! Les données de session sont stockées côté serveur, mais un UID est stocké côté client dans un cookie. Il permet au serveur de faire correspondre un utilisateur donné avec les bonnes données de session. L'UID est protégé et difficile à pirater, mais pas invulnérable. Pour les actions sensibles (changement d'email ou réinitialisation du mot de passe), ne vous fiez pas aux sessions ni aux cookies: demandez le mot de passe de l'utilisateur pour confirmer l'action.
Les données sensibles ne doivent jamais être stockées dans des cookies (e-mails, mots de passe cryptés, données personnelles ...). Gardez à l'esprit que les données sont stockées sur un ordinateur étranger et si l'ordinateur n'est pas privé (salle de classe ou ordinateurs publics), quelqu'un d'autre peut potentiellement lire le contenu des cookies.
Les données Remember-me doivent être stockées dans des cookies, sinon les données seront perdues lorsque l'utilisateur ferme le navigateur. Cependant, ne sauvegardez pas le mot de passe ou les données personnelles de l'utilisateur dans le cookie «Remember-me». Stockez les données utilisateur dans la base de données et associez ces données à une paire cryptée d'identifiant / clé stockée dans un cookie.
Après avoir pris en compte les recommandations précédentes, la question suivante est enfin ce qui vous aide à choisir entre les cookies et les sessions:
Les données persistantes doivent-elles rester lorsque l'utilisateur ferme le navigateur?
la source
lorsque vous enregistrez le #ID en tant que cookie pour reconnaître les utilisateurs connectés, vous montrez en fait aux utilisateurs des données qui ne leur sont pas liées. De plus, si un tiers essaie de définir des identifiants aléatoires comme données de cookie dans son navigateur, il pourra 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é la majeure partie du projet. outre cookie a le privilège de rester longtemps, tandis que les sessions se terminent plus rapidement. Les sessions ne conviennent donc pas dans ce cas. En réalité, de nombreux sites Web et services célèbres et populaires utilisent des cookies et vous pouvez 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 la manière dont vous utilisez les cookies: si vous utilisez des clés aléatoires au lieu d'identifiants pour reconnaître les utilisateurs connectés, premièrement, vous ne divulguez pas vos données primaires à des utilisateurs aléatoires, et deuxièmement, si vous considérez le hasard 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: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" et il sera moins probable pour quiconque de créer la clé exacte et de se faire passer pour quelqu'un d'autre.
la source
En fait, la session et les cookies ne sont pas toujours des choses séparées. Souvent, mais pas toujours, session utilise des cookies.
Il y a quelques bonnes réponses à votre question dans ces autres questions ici. Étant donné que votre question porte spécifiquement sur l'enregistrement de l'IDU (ou de l'ID) de l'utilisateur, je ne pense pas que ce soit tout à fait un double de ces autres questions, 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?
la source
J'utilise personnellement les cookies et la session.
Cookies utilisés uniquement lorsque l'utilisateur clique sur la case à cocher "se souvenir de moi" . et les cookies sont également cryptés et les données ne sont décryptées que sur le serveur. Si quelqu'un essaie 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 , tout le monde peut simplement changer l'identifiant et le nom d'utilisateur de l'utilisateur dans les cookies pour accéder à n'importe quel compte.
Merci,
la source
La session et le 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 utilisé pour identifier les utilisateurs. En utilisant des cookies, nous pouvons stocker les données. C'est une petite partie des données qui sera stockée dans le navigateur Web de l'utilisateur. Ainsi, chaque fois que l'utilisateur navigue la prochaine fois, le navigateur renvoie les informations de données de cookie au serveur pour obtenir les activités précédentes.
Crédits: Session et Cookie
la source
TL; DR
+--------------------------------------------------+---------------------------------+------------------------------------------------------------+ | Criteria / factors | Sessions | Cookies | +--------------------------------------------------+---------------------------------+------------------------------------------------------------+ | Epoch (start of existence) | Created BEFORE an HTTP response | Created AFTER an HTTP response | | Availability during the first HTTP request | YES | NO | | Availability during the succeeding HTTP requests | YES | YES | | Ultimate control for the data and expiration | Server administrator | End-user | | Default expiration | Expires earlier than cookies | Lasts longer than sessions | | Server costs | Memory | Memory | | Network costs | None | Unnecessary extra bits | | Browser costs | None | Memory | | Security | Difficult to hijack | Easy to hijack | | Deprecation | None | Now discouraged in favor of the JavaScript "Web Storage" | +--------------------------------------------------+---------------------------------+------------------------------------------------------------+
Détails
Les avantages et les inconvénients sont subjectifs. Ils peuvent entraîner une dichotomie (un avantage pour certains, mais considéré comme un inconvénient pour d'autres). Au lieu de cela, j'ai exposé ci-dessus les facteurs qui peuvent vous aider à décider lequel choisir.
Existence lors de la première requête et réponse HTTP
Disons simplement que vous êtes une personne côté serveur qui souhaite traiter à la fois la session et le cookie. La première poignée de main HTTP se déroulera comme suit:
À l'étape 1, le navigateur n'a aucune idée du contenu des sessions et des cookies. À l'étape 4, le serveur peut avoir la possibilité de définir les valeurs de la session et des cookies.
Disponibilité pendant les requêtes et réponses HTTP suivantes
Charge utile
Disons que dans une seule page Web, vous chargez 20 ressources hébergées
example.com
, ces 20 ressources contiendront des informations supplémentaires sur les cookies. Même s'il ne s'agit que d'une demande de ressource pour CSS ou une image JPG, il contiendrait toujours des cookies dans leurs en-têtes sur le chemin du serveur. Une requête HTTP à une ressource JPG doit-elle contenir un tas de cookies inutiles?Désapprobation
Il n'y a pas de remplacement pour les sessions. Cependant, il existe de nombreuses autres options pour stocker des données dans le navigateur plutôt que les cookies de la vieille école .
Stockage des données utilisateur
La session est plus sûre pour le stockage des données utilisateur car elle ne peut pas être modifiée par l'utilisateur final et ne peut être définie que côté serveur. Les cookies, quant à eux, peuvent être détournés car ils sont simplement stockés sur le navigateur.
la source
Les sessions vous permettent de stocker des informations individuelles comme avec les cookies, mais les données sont stockées sur le serveur au lieu du client.
la source
Comme d'autres l'ont dit, les sessions sont intelligentes et ont plus l'avantage de cacher les informations au client.
Mais Cookie a toujours au moins un avantage , vous pouvez accéder à vos cookies à partir de Javascript (par exemple ngCookies ). Avec la session PHP, vous ne pouvez pas y accéder en dehors du script PHP.
la source
Je vais sélectionner Session, tout d'abord la session est plus sécurisée que les cookies, les cookies sont les données du site client et la session est les données du site serveur. Les cookies sont utilisés pour identifier un utilisateur, car ce sont de petits morceaux de code qui sont intégrés à mon serveur avec le navigateur de l'ordinateur de l'utilisateur. D'autre part, Session vous aide à sécuriser votre identité car le serveur Web ne sait pas qui vous êtes car l'adresse HTTP change l'état 192.168.0.1 en 765487cf34ert8ded… ..ou autre chose avec l'aide des méthodes GET et POST. La session stocke les données de l'utilisateur dans une session d'ID unique que même l'ID d'utilisateur ne peut pas correspondre. Session stocke les informations d'un seul utilisateur dans toutes les pages d'une application. L'expiration des cookies est définie à l'aide de setcookies (), tandis que l'expiration de la session n'est pas définie, elle expire lorsque l'utilisateur éteint les navigateurs.
la source
Une session est un groupe d'informations sur le serveur associé aux informations du cookie. Si vous utilisez PHP, vous pouvez vérifier la session. enregistrer l'emplacement du chemin _ et "voir les sessions". Un cookie est un extrait de données envoyées et renvoyées par les clients. 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 le faire (magie des chaînes de requête, etc.) mais les cookies sont probablement les plus courants pour cela.
la source
Les cookies et les sessions sont utilisés pour stocker des informations. Les cookies ne sont stockés que sur la machine côté client, tandis que les sessions sont stockées sur le client ainsi que sur un serveur.
Session
Une session crée un fichier dans un répertoire temporaire sur le serveur où les variables de session enregistrées et leurs valeurs sont stockées. Ces données seront disponibles sur toutes les pages du site lors de cette visite.
Une session se termine lorsque l'utilisateur ferme le navigateur ou après avoir quitté le site, le serveur mettra fin à la session après une période de temps prédéterminée, généralement 30 minutes.
Biscuits
Les cookies sont des fichiers texte stockés sur l'ordinateur client et ils sont conservés à des fins de suivi d'utilisation. Le script serveur envoie un ensemble de cookies au navigateur. Par exemple, le nom, l'âge ou le numéro d'identification, etc. Le navigateur stocke ces informations sur une machine locale pour une utilisation future.
Lorsque la prochaine fois que le navigateur envoie une demande au serveur Web, il envoie ces informations sur les cookies au serveur et le serveur utilise ces informations pour identifier l'utilisateur.
la source