¿Es necesario cifrar un campo oculto del estado de la vista ASP.NET cuando se usa el certificado SSL?

5

Si tiene un certificado SSL para un sitio web, es necesario hacer que ViewState sea más difícil de descodificar. Sin ningún desarrollo adicional, parece que ASP.NET lo codifica como una cadena base 64. Encontré un código de muestra para decodificar fácilmente este campo oculto "__VIEWSTATE". ¿SSL no lo cifra (junto con otras cosas) por usted?

    
pregunta MacGyver 04.08.2011 - 20:53
fuente

3 respuestas

10

Debes distinguir dos tipos de atacantes:

SSL se utiliza durante el transporte para evitar que una tercera persona lea y modifique los datos transmitidos.

El usuario que envía datos al servidor y obtiene respuestas del servidor, obviamente puede ver y modificar los datos de la forma que desee. De modo que el usuario puede modificar el campo de formulario oculto que contiene el estado de vista. El escape de Base64 no ofrece ninguna protección aquí, es solo una forma de garantizar que los datos binarios no se alteren por las conversaciones de los conjuntos de caracteres.

Entonces, en el caso probable de que su estado de vista contenga información confiable, que un usuario malintencionado no deba modificar, debe habilitar el cifrado y firmarlo.

    
respondido por el Hendrik Brummermann 04.08.2011 - 21:12
fuente
2

"Cifrar" es diferente de "codificar". BASE64 no es un algoritmo de cifrado.

ViewState contiene información "binaria": información que es más que simple texto. Como no puede (o no debe) tener información binaria las etiquetas HTML META o las cookies HTTP, los datos binarios se han codificado en un formato de texto. La codificación BASE64 es una opción popular, por lo que es la codificación hexadecimal simple.

Tenga en cuenta que la variable ViewState también está codificada en ASN.1. Contiene numerosos campos de longitud variable, que están "etiquetados" con información de tipo y longitud codificada.

Dentro de todo eso, la variable ViewState contiene información criptográficamente segura, como los ID de sesión, que son resistentes a la manipulación, por lo que los piratas informáticos no pueden manipular los ID de sesión de una persona para piratear la sesión de otra persona. Es por eso que ves decodificadores de ViewState: a veces los operadores de sitios web no usan los primates criptográficos correctos y exponen los elementos internos de Viewstate a la manipulación por parte de piratas informáticos.

Como han dicho otras respuestas, SSL solo cifra el tráfico en el cable de la red, de modo que las personas no puedan escucharlo. Obviamente, tiene que ser descifrado en su lado para que su navegador pueda renderizar la página, y en el lado del servidor cuando crea la página.

    
respondido por el Robert David Graham 05.08.2011 - 00:34
fuente
0

ASP.NET 2.0 o posterior también envía una clave MAC que actúa como un hash y ayuda a evitar la manipulación, consulte esta página para más detalles. Eso establece la barrera para atacar un poco más alto que solo el desorden con una cadena codificada en base64.

    
respondido por el Wyatt Barnett 05.08.2011 - 00:15
fuente

Lea otras preguntas en las etiquetas