2009-09-29 15 views
8

¿Cómo encripto las cadenas de consulta en aspx.net?Cómo cifrar cadenas de consulta en asp.net?

P.S. Me doy cuenta de que esto no ofrece seguridad. Solo estoy buscando ofuscar un acertijo.

P.P.S Aunque marqué la respuesta de CKret como la correcta (para la pregunta en su redacción, creo que es la respuesta más correcta). Sin embargo, para mí, voy a probar la alternativa de ChoasPandion al cifrado. Si necesitaba más seguridad, miraría a CKret o a Ian.

+1

¿Por qué no el cifrado de la oferta de seguridad cadena de consulta, en el supuesto de que se ha hecho correctamente? – LukeH

+1

Luke, debería haber dicho en cambio, no estoy buscando "seguridad". Solo quería evitar que mucha gente se centrara en la seguridad. – user179700

Respuesta

11

Una entrada del blog de Mads Kristensen acerca Query String encryption.

Cuidado con una cosa sin embargo: Se utiliza PasswordDeriveBytes dentro del método de cifrado. Ha sido reemplazado por Rfc2898DeriveBytes. Si solo necesita encriptar la cadena de consulta y no todos los enlaces en la página, está bien. Si, no obstante, también desea encriptar todos los enlaces, querrá agregar un reescritor para encriptar también esa cadena de consulta.

Hacerlo tendrá un impacto sustancial en el rendimiento si tiene muchos enlaces en sus páginas. Lo que desearía hacer es sacar PasswordDeriveBytes/Rfc2898DeriveBytes de los métodos de cifrado/descifrado y almacenar la clave y IV en lugar de la contraseña y la sal.

Editar:
he publicado un post sobre este tema here.

+2

Buen enlace. Quien lo siga debería leer los comentarios para obtener más información. – NotMe

2

No se moleste en encriptarlo. Simplemente conviértalo en una cadena base 64.

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

Tenga en cuenta que esta solución no ofrece seguridad, solo ofuscación. (La seguridad por oscuridad no lo es). Sin embargo, en el caso del OP, parece que está más interesado en la ofuscación que en la seguridad, por lo que probablemente sea una buena solución, siempre que urlEncode a la cadena devuelta. –

+1

Es por eso que publiqué esta respuesta. Si realmente necesita seguridad, esta sería una respuesta pobre. – ChaosPandion

1

Si tratando de ocultar su producto de Id y cosas así, entonces ¿por qué no usar simplemente Encryption?

Supongo que lo que quiere hacer es evitar que las personas editen la cadena de consulta para obtener resultados diferentes. La forma simple de hacerlo es agregar un Hash de la cadena de consulta a la cadena de consulta, y tener alguna funcionalidad de página base para verificar que el hash sea correcto para la solicitud, identificando cadenas de consulta manipuladas.

Ver Prevent query string manipulation by adding a hash?

+0

Hashing es diferente del cifrado. – Nayef

Cuestiones relacionadas