2009-09-29 7 views
8

Comment chiffrer des chaînes de requête dans aspx.net?Comment chiffrer des chaînes de requête dans asp.net?

P.S. Je réalise que cela n'offre pas de sécurité. Je cherche juste à obscurcir un puzzle.

P.P.S Bien que j'ai marqué la réponse de CKret comme la bonne (pour la question telle que formulée je crois que sa réponse est la plus correcte). Cependant, pour ma part, je vais juste essayer l'alternative de ChoasPandion au cryptage. Si j'avais besoin de plus de sécurité, je regarderais CKret ou Ian.

+1

Pourquoi ne pas chiffrer la sécurité de l'offre querystring, en supposant que cela a été fait correctement? – LukeH

+1

Luke, j'aurais dû dire plutôt, je ne cherche pas de "sécurité". Je voulais juste éviter que beaucoup de gens se concentrent sur la sécurité. – user179700

Répondre

11

Un blog par Mads Kristensen à propos Query String encryption.

Prenez garde d'une chose cependant: Il utilise PasswordDeriveBytes dans la méthode Chiffrer. Il a été remplacé par Rfc2898DeriveBytes. Si vous avez seulement besoin de crypter la chaîne de requête et pas tous les liens sur la page c'est très bien. Toutefois, si vous souhaitez également crypter chaque lien, vous devez ajouter un réécriteur pour chiffrer ces chaînes de requête.

Cela aura un impact considérable sur les performances si vous avez de nombreux liens sur vos pages. Ce que vous voulez faire est de sortir le PasswordDeriveBytes/Rfc2898DeriveBytes des méthodes encrypt/decrypt et de stocker la clé et IV au lieu du mot de passe et du sel.

Edit:
J'ai publié un billet de blog sur cette question here.

+2

Bon lien. Celui qui le suit devrait lire les commentaires pour plus d'informations. – NotMe

2

Ne vous embêtez pas à le crypter. Juste le convertir en une base de 64 chaînes.

string encoded = Convert.ToBase64String(Encoding.Unicode.GetBytes(myQueryStringValue)); 
+2

Notez que cette solution n'offre pas d'obfuscation de sécurité uniquement. (La sécurité par l'obscurité n'est pas). Cependant, dans le cas de l'OP, il semble qu'il soit principalement intéressé par l'obfuscation, plutôt que par la sécurité, donc ce serait probablement une bonne solution, tant que vous UrlEncode à la chaîne retournée. –

+1

C'est pourquoi j'ai posté cette réponse. S'il a vraiment besoin de sécurité, ce serait une mauvaise réponse. – ChaosPandion

1

Si vous essayez de cacher de votre produit Id et des choses comme ça, alors pourquoi ne pas simplement utiliser Encryption?

Je suppose que ce que vous voulez faire, c'est d'empêcher les gens d'éditer la chaîne de requête pour obtenir des résultats différents. La façon simple de faire cela est d'ajouter un Hash de la chaîne de requête à la chaîne de requête, et d'avoir une fonctionnalité de base de page qui vérifie que le hash est correct pour la requête, en identifiant les chaînes de requête falsifiées.

Voir Prevent query string manipulation by adding a hash?

+0

Le hachage est différent du cryptage. – Nayef

Questions connexes