Comment puis-je chiffrer et déchiffrer une valeur d'un cookie dans PHP (quelle sera la sécurité du cryptage) p>
5 Réponses :
Il existe une variété de façons différentes de crypter des informations dans des cookies et ailleurs. La force du cryptage variera par la méthode que vous choisissez de faire le cryptage réel. myCrypt code>
est un bon endroit pour commencer . Voir cette réponse pour un exemple d'utilisation mcrypt. p>
Je ne recommande pas de mettre quelque chose sensible dans un cookie, même si cela va être crypté. Manière aussi tentante pour que quelqu'un craque. Essayez de coller aux sessions si vous le pouvez. P>
"Bien trop tentant pour quelqu'un de craquer" mais ... vraisemblablement ... Si vous utilisez une crypto forte, sans la clé, ils ne peuvent pas le crack. Et si ils ont i> ont la clé, cela signifie qu'ils ont déjà craqué votre serveur (dans une certaine mesure dommageable), vous avez donc des problèmes plus importants à vous soucier de vous inquiéter. Le temps d'expiration du cookie, par exemple , pourrait être considéré comme sensible au stockage sur le client, mais l'avantage de la stockage de la clientèle crypté est clair: vous pouvez immédiatement vérifier si une session est toujours valide, et à moins d'avoir craqué votre boîte, elles ne peuvent pas la définir. , De toute façon.
Je ne peux pas simplement penser à une situation où la cryptage des données dans le cookie est utile. Si vous souhaitez conserver des données secrètes sur l'utilisateur ou ses préférences, les informations, quoi que ce soit, puis rangez-le sur le serveur dans les fichiers, dans la session ou dans la base de données, mais pas dans l'ordinateur du client. P>
D'autre part, si vous créez une authentification, vous devez utiliser des sessions au lieu de créer des valeurs de cookie cryptées secrètes. Les sessions n'étaient pas implémentées pour rien, ils sont la voie à suivre. P>
Une énorme partie d'une apivité reposante n'est-elle pas une grande partie? Dans quel cas stockant des données sensibles via des cookies cryptés avec une clé secrète est assez fondamentale. Ou je manque quelque chose?
Si votre API est vraiment apatride, aucune session n'existe. Devrait être le client responsable des informations de stockage entre la demande.
"Je ne peux pas simplement penser à une situation où la cryptage des données dans le cookie est utile" L'OP n'a pas demandé si vous pouviez ou non; Vraisemblablement, l'OP sait "pourquoi", il a demandé "comment". Vous n'avez pas répondu à cette question.
Ce n'est pas une réponse à la question du tout
Voici un. Disons que vous voulez que vos visiteurs puissent utiliser une fonctionnalité de votre page, personnalisées sur mesure, sans avoir à sauter à travers les cerceaux de «journalisation». Pour quelque chose à faire avec de l'argent, je suis d'accord avec vous. Mais il existe d'autres situations qui n'exigent pas ce niveau de sécurité, mais où l'obscurcissement du cryptage serait précieux.
@ParthianShot précisément ma pensée lorsque vous recherchez une solution réelle à mon problème. L'attitude exprimée dans cette réponse est l'obstacle principal de cette plate-forme.
Je suis en plein accord avec les autres réponses: si les données sont vraiment sensibles, il doit être stocké du serveur dans une session, pas dans un cookie. P>
En ce qui concerne les façons de chiffrer les contenus de cookie, le SUHOSIN PHP Extension offre la capacité à crypter de manière transparente tous les cookies . Si vous avez la possibilité d'installer des extensions PHP, cela peut être plus facile pour vous que de rédiger votre propre schéma de cryptage. P>
Si le cookie est crypté de manière sécurisée (par exemple, avec un secret stocké de serveur qui change régulièrement), je ne vois aucun problème à stocker des données utiles dans le cookie. Pourquoi le stocker sur le serveur? Rendre le client faire du travail pour un changement - surtout si c'est des préférences. Pourquoi le serveur doit-il avoir à stocker et à récupérer constamment des données d'un fichier de session? Et si vous avez des centaines de milliers d'utilisateurs pilonnant votre site? Maintenant, vous devez maintenir des centaines de milliers de fichiers de session. P>
La question de l'OP était "Comment puis-je crypter des cookies dans PHP et que cela serait sûr?", Et votre réponse était "que je pouvais voir qu'être une chose utile qu'une personne voudrait faire". Aucune partie de la question de l'OP n'a été répondue, ici.
Je peux penser à une utilisation raisonnable pour cela. Supposons que vous ayez une grande ferme de serveurs, vous allez avoir un goulot d'étranglement sur la base de données et / ou le serveur memcached pour la manipulation des demandes de session. "Cet utilisateur est-il connecté?" p>
Si vous deviez stocker les données de session des utilisateurs en tant que valeur cryptée dans la cookie, vous pouvez empêcher de devoir faire assez de quelques-unes et permettant à un magasin de cookies de taille illimitée, car il y a 0 impact sur votre côté autre qu'être CPU lié au cryptage / déchiffrement des données de cookie. p>
Ruby sur les rails par défaut Cela - bien que cela ne signale que les données et ne le chiffre pas. Il existe une mise en œuvre alternative qui crypte les données avec sa propre clé et sa signature pour que l'utilisateur ne soit pas capable de voir quelles données vous stockez dans leur session. P>
La question de l'OP était "Comment puis-je crypter des cookies dans PHP et que cela serait sûr?", Et votre réponse était "que je pouvais voir qu'être une chose utile qu'une personne voudrait faire". Aucune partie de la question de l'OP n'a été répondue, ici.
Je ne vois pas comment cela est utile, vous devriez utiliser $ _session [] pour des informations sensibles.