8
votes

Cryptage et déchiffrement des informations stockées dans des cookies

J'ai besoin de crypter de manière sécurisée et de déchiffrer les informations sur les utilisateurs ( user_id et mot de passe ) dans les cookies.

Quelle est la meilleure façon de faire cela? Quelles fonctions de cryptage et de déchiffrement ai-je besoin?

J'utilise php et mySQL et l'exemple sera participé?


5 commentaires

Stocker le mot de passe dans Cookie n'est pas recommandé


Pourquoi avez-vous besoin pour stocker des mots de passe utilisateur dans un cookie?


Étant donné que les données postales peuvent être Sniff, donc je pensais utiliser Cookie avec cryptage pour envoyer des informations d'identification de connexion serait mieux que vous suggérez-vous?


Ce qui est faux laissant l'utilisateur entrer son mot de passe. Si vous voulez un système de «souvenir de moi», vous pouvez trier une sorte de jeton dans un cookie. Stocker les mots de passe dans un cookie est un énorme problème de sécurité.


Utilisez SSL pour protéger vos données publiées.


3 Réponses :


15
votes

Par exemple

    <?php

function encryptCookie($value){
   if(!$value){return false;}
   $key = 'The Line Secret Key';
   $text = $value;
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
   $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
   $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
   return trim(base64_encode($crypttext)); //encode for cookie
}

function decryptCookie($value){
   if(!$value){return false;}
   $key = 'The Line Secret Key';
   $crypttext = base64_decode($value); //decode cookie
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
   $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
   $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
   return trim($decrypttext);
}

?>


6 commentaires

Pourriez-vous définir la fonction chiffrercookie () ?


@Michiel: Je serais beaucoup plus intéressé par Decryptcookie () s'il va utiliser MD5.


Désolé, était un peu rapide là-bas. J'ai ajouté les exemples de chiffrement / déchiffrer maintenant


@Michael: C'est drôle (et intéressant)! @Mikelangelo: Où utilisez-vous MD5?


@Michael: Je ne pouvais pas décoder pour obtenir le message d'origine si le message d'origine contient des caractères spéciaux: $ valeur = "adsj + ADF% b3 ==". Je ne sais pas si cela est lié à ce sujet, mais je ne peux pas que le cookie soit bien sûr, mais le $ _Cookie ['mycookie] n'a pas ces caractères spéciaux. Merci.


mcrypt_encrypt (): clé de la taille 19 non prise en charge par cet algorithme. Seules clés de tailles 16, 24 ou 32 supportées



9
votes

Ne stockez pas les mots de passe dans un cookie. Ne jamais faire ce genre de choses. Si vous souhaitez que l'utilisateur ne soit pas obligé de ne pas avoir à entrer son identifiant et votre mot de passe pour vous connecter, vous pouvez générer un jeton aléatoire lorsqu'il se connecte ( SHA1 (mt_rand ()) par exemple) et stockez ceci valeur dans le cookie et la base de données.

Puis, lorsque vous essayez d'identifier un utilisateur, il vous suffit de vérifier si la valeur trouvée dans son cookie peut être trouvée dans votre base de données. Générez une nouvelle valeur à chaque fois qu'il se connecte (à l'aide de nom + mot de passe ou avec ce cookie).


0 commentaires

1
votes

Il n'y a pas de bon moyen de "crypter de manière sécurisée et déchiffrer des informations sur les utilisateurs de cookies" car stocker ces informations dans des cookies est intrinsèquement insécurité.

La technique recommandée consiste à générer un identifiant de session aléatoire et à l'utiliser comme la uniquement pièce d'information stockée dans des cookies. Cet ID de session est ensuite utilisé sur le côté serveur pour rechercher les informations de compte réels de l'utilisateur (et tout état de ce qu'ils font) dans une base de données ou un fichier afin que vous n'envoyez qu'une petite quantité de données sans signification et dans l'ensemble du réseau avec chaque demande faite par l'utilisateur. Si un tel cookie est intercepté par les méchants, il ne compromettra que la session de l'utilisateur (permettant à l'attaquant d'imiter temporairement l'utilisateur jusqu'à la fin de la session); Le mot de passe de l'utilisateur restera sécurisé car il n'est pas dans le cookie et (probablement) n'est jamais affiché sur une page de votre application.


0 commentaires