[ASP.NET] Encriptando el ViewState

[twitter-follow screen_name=julitogtu]

Como ya todos sabrán, cuando hablamos del desarrollo de aplicaciones Web con ASP.NET Web Forms, un tema clave es el ViewState, el ViewState permite mantener el estado de una página, controles cuando se realiza un postback, por ejemplo, si tu seleccionas un ítem en una lista (dropdownlist en este caso) y enviar tu página al servidor por alguna razón, a menos que programáticamente se cambie el ítem seleccionado cuando se vuelva a cargar la página la selección que se hizo no se pierde, y esto es gracias al ViewState.

Ahora, el ViewState se almacena en un campo oculto en cada página, y ese valor es validado por el servidor cuando la página en enviada, si quieren ver el ViewState de x página entonces en el explorador seleccionar ver código fuente, y allí buscamos el control con id=’_ViewState’, por ejemplo:

 1: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTY4ODMwNDIxNWRkT+WM3DOwh5uijZZHqblfLffgUC4in6ObYJk+MWBASQ0=" />

Como se ve, el valor del ViewState no es entendible, pero no porque este encriptado, es porque por defecto es almacenado con un encoding en base64, el cual es muy sencillo de leer, una aplicación que pueden usar y la que siempre he usado es ViewStateDecoder, la cual lee el valor y permite ahora si ver de manera claro los datos.

Ahora, cuando la seguridad es nuestra aplicación es un tema fundamental, es posible encriptar el valor del ViewState, y es posible realizarlo a nivel de todo nuestro sitio o en una página específica, para hacerlo a nivel de página simplemente en la directiva de la página colocamos el atributo ViewStateEncryptionMode=”Always” y si fuera a nivel de sitio, se debe especificar en el archivo de configuración <pages viewStateEncryptionMode=”Always”></pages> dentro del nodo System.Web.

Una consideración muy importante que se debe tener presente es que cuando se encripta el ViewState, la página tardará más tiempo en cargar,  así que debe usarse con precaución… además les recomiendo le den una mirada a temas de optimización, ya que algunas veces podemos tener un ViewState increíblemente grande, lo cual va a causar una disminución en el rendimiento de la aplicación.

Espero les sea interesante el post, hasta la próxima.

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *