2010-04-05 3 views
2

Nous avons une bibliothèque de gestion des cookies qui écrit un cookie contenant des informations sensibles, cryptées avec Rijndael. Le cookie crypte et décrypte correctement dans les tests unitaires (en utilisant Moq), fonctionne bien pour les applications Web MVC, mais lorsqu'il est appelé à partir d'un site Web ASP.net 2.0, le cookie ne peut pas être déchiffré. "Le remplissage n'est pas valide et ne peut pas être supprimé."Rembourrage invalide sur le cookie ASP 2.0, MVC semble correct

Nous sommes sûrs que la valeur de cookie est valide car nous l'avons testée 10 000 fois avec des données aléatoires dans un test unitaire. Il y a quelque chose à propos de ce que fait ASP.NET 2.0 quand il lit et écrit le cookie qui cause des problèmes.

Il doit y avoir un getcha. Aucune suggestion?

Répondre

0

Hex-encoder les données avant de les stocker dans le cookie, car les caractères hexadécimaux sont valables pour les valeurs de cookie. (Base64 n'est pas sûr tel quel, mais vous pouvez remplacer les caractères + =/par _-., Par exemple.) Notez également que les cookies ont une longueur maximale, bien que j'oublie quelle est cette limite.

Si vous essayez de sérialiser une grande valeur, pensez à la stocker dans Session, afin que l'utilisateur n'y ait pas accès du tout. L'inconvénient de ceci est que cela utilise de la mémoire sur le serveur, et si vous avez une ferme Web, vous devez les synchroniser sur les machines.

+0

Déplacer vers l'hexagone semble avoir résolu le problème, bien que je ne sois pas clair pourquoi asp.net mvc était d'accord avec le cookie, mais webforms ne l'était pas. Les problèmes aléatoires peu fréquents sont difficiles à déboguer! Merci! –