Je dois passer l'état d'un thread à travers le client, mais uniquement pour des requêtes get spécifiques (liens alias). En tant que tel, je ne veux pas ajouter cet état à ViewState du client, en l'encombrant. L'état doit être chiffré. Comment puis-je créer un nouveau dictionnaire similaire à ViewState et le chiffrer avec la clé et les paramètres de MachineKey dans machine.config? Si le composant de dictionnaire n'est pas exposé, comment puis-je encoder/décrypter des chaînes en utilisant la clé de machine.config. Je ne veux pas ajouter plus de configuration qui doit être répliquée sur notre batterie de serveurs pour dupliquer les fonctionnalités existantes.Comment puis-je accéder aux bibliothèques sous-jacentes que .NET utilise pour la signature et le cryptage de ViewState?
1
A
Répondre
0
La configuration de la clé machine est accessible via System.Web.Configuration.MachineKeySection qui n'a pas de méthodes publiques à part un constructeur et Reset.
Décryptage des chaînes est assurée par la méthode suivante:
.method assembly hidebysig static string
DecryptStringWithIV(string s,
valuetype System.Web.Configuration.IVType ivType) cil managed
qui appelle
.method assembly hidebysig static uint8[]
EncryptOrDecryptData(bool fEncrypt,
uint8[] buf,
uint8[] modifier,
int32 start,
int32 length,
bool useValidationSymAlgo,
bool useLegacyMode,
valuetype System.Web.Configuration.IVType ivType) cil managed
Ce sont à la fois privé; la fonctionnalité de chiffrement/déchiffrement n'est pas exposée. Il est peut-être possible d'accéder au décryptage via les implémentations de System.Web.IHttpHandler en construisant un HttpContext, bien que je ne sache pas où on pourrait appeler la fonctionnalité de chiffrement.
Même sans faire le déchiffrement moi-même, je ne peux pas trouver un moyen d'accéder à cette fonctionnalité dans un gestionnaire générique: voir: http://stackoverflow.com/questions/2722377/viewstate-in-a-ashx-handler – Cirdec
http://www.codinginstinct.com/2008/09/encrypt-cookie-using-machine-key.html – Cirdec
La seule façon d'accéder directement à ce genre de choses est la réflexion. – Cirdec