2009-09-29 3 views
8

Come crittografare le stringhe di query in aspx.net?Come crittografare le stringhe di query in asp.net?

P.S. Mi rendo conto che questo non offre sicurezza. Sto solo cercando di offuscare un enigma.

P.P.S Anche se ho contrassegnato la risposta di CKret come corretta (per la domanda come formata credo che la sua sia la risposta più corretta). Tuttavia, per me stesso, sto solo andando a provare l'alternativa di ChoasPandion alla crittografia. Se avessi bisogno di più sicurezza, guarderei CKret o Ian's.

+1

Perché non sarebbe criptare la sicurezza offerta querystring, partendo dal presupposto che è stato fatto correttamente? – LukeH

+1

Luke, avrei dovuto dire, non sto cercando "sicurezza". Volevo solo evitare che molte persone si concentrassero sulla sicurezza. – user179700

risposta

11

Un post sul blog di Mads Kristensen su Query String encryption.

Attenzione di una cosa però: egli utilizza PasswordDeriveBytes all'interno del metodo Encrypt. È stato sostituito da Rfc2898DeriveBytes. Se hai solo bisogno di crittografare la stringa di query e non tutti i collegamenti nella pagina vanno bene. Se vuoi comunque criptare ogni link, ti ​​consigliamo di aggiungere un Rewriter per crittografare anche quella stringa di query.

In tal modo si avrà un impatto sostanziale sulle prestazioni se si dispone di molti collegamenti sulle pagine. Quello che vorresti fare è rimuovere i PasswordDeriveBytes/Rfc2898DeriveBytes dai metodi criptare/decifrare e memorizzare la chiave e IV invece della password e sale.

Edit:
ho pubblicato un post sul blog su questo tema here.

+2

Buon collegamento. Chiunque lo segua dovrebbe leggere i commenti per maggiori informazioni. – NotMe

2

Non preoccupatevi di crittografarlo. Basta convertirlo in una stringa 64 di base.

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

Si noti che questa soluzione non offre sicurezza - solo confusione. (La sicurezza per oscurità non lo è). Tuttavia, nel caso dell'OP sembra che sia per lo più interessato all'offuscamento, piuttosto che alla sicurezza, quindi questa sarebbe probabilmente una buona soluzione, purché tu UrlEncode alla stringa restituita. –

+1

Ecco perché ho postato questa risposta. Se ha davvero bisogno di sicurezza, questa sarebbe una risposta scarsa. – ChaosPandion

1

Se cercando di nascondere il vostro prodotto ID e cose del genere, allora perché non basta usare Encryption?

Immagino che cosa vuoi fare, è fermare le persone che modificano la stringa di ricerca per ottenere risultati diversi. Il modo più semplice per farlo è aggiungere un hash della stringa di query alla stringa di query e disporre di alcune funzionalità di base della pagina per verificare che l'hash sia corretto per la richiesta, identificando le stringhe di query manomesse.

Vedi Prevent query string manipulation by adding a hash?

+0

L'hash è diverso dalla crittografia. – Nayef