Asp.net problema de encriptación ViewState
encryption base64 (3)
Mi conjetura es que la granja de servidores web de carga equilibrada es la fuente de la confusión. Afirmó que solo "hay un servidor [está] para probar en este momento", pero todos los síntomas que experimenta suenan exactamente como lo que sucedería si se estuvieran ejecutando varios servidores en la granja de servidores web, pero solo creó el archivo web.config y los cambios de machine.config en un servidor. Cuando llegas al sitio web con tu navegador, a veces golpeas un servidor que está configurado de una manera, a veces golpeas otro servidor que está configurado de otra manera.
Estoy intentando activar el cifrado de estado de vista Siempre como medida de seguridad para mi sitio web ASP.NET 3.5 alojado en IIS6. Hemos desactivado viewstate pero aún vemos algunos "estados de control" en esta cadena. En un entorno de prueba, puedo configurar simplemente lo siguiente en web.config y ya no puedo descifrar en base64 el viewstate a semi-plano:
<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">
Incluso agregué lo siguiente (generado por el generador de claves de la máquina ) a machine.config y aún encripto la multa de viewstate en mi servidor de prueba:
<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />
Mi entorno que no es de prueba no parece captar los cambios anteriores, ya que siempre puedo basificar 64 decodificar el estado de visualización a texto sin formato con la configuración anterior. Siempre estoy iisreset después de hacer cualquier cambio.
Alguna información sobre mi servidor web que no es de prueba:
- Web Farm / Load Balanced (pero ahora solo hay un servidor para probar)
- Sql Session State (inicialmente se necesitaba machinekey en machine.config para configurarlo)
- machine.config: despliegue retail = "true"
¿Puede alguien sugerir dónde buscar configuraciones adicionales que puedan interferir con el cifrado de estado de vista de asp.net?
EDITAR: Ahora, en mi servidor de prueba iis, no puedo deshacer la configuración de viewStateEncryptionMode, ya que encripta el estado de visualización incluso cuando la configuro como "Nunca" y ninguno de mis otros sitios web parece retener esta configuración. ¿Dónde puedo buscar para ver dónde se invalida esta propiedad? ¿Hay algún caché donde se almacene esta configuración que deba borrarse además de lo que se haría cuando iisreset / stop www service / touch machine.config?
EDITAR FINAL: Después de días de estudiar los archivos de configuración, abandoné e implementé esto a través del código. Ya tenía un módulo de seguridad que se adjuntaba a los eventos de la página, por lo que en Page_Load agregué: Page.RegisterRequiresViewStateEncryption ();
Me encantaría saber qué impedía que esta configuración se detectara en IIS6 de forma inmediata. Cuando ejecuto cassini localmente, si configuro viewStateEncryptionMode en "Siempre" a través del nodo de páginas, vería inmediatamente que codifica el estado de visualización y representa el campo oculto adicional con id = "__ VIEWSTATEENCRYPTED". Cuando luego lo puse en "Nunca" vería inmediatamente que el cifrado se desactiva. Si realizo el mismo cambio exacto en el sitio web de mi sitio web alojado en IIS6, no tendría ningún efecto de inmediato, pero si permito que la configuración permanezca allí, finalmente se establecerá. Me gustaría detener / iniciar el servicio www, restablecer iis, borrar la caché temporal de ASPNET pero no sé qué más probar. ¡Espero que esta publicación pueda ROTAR por un tiempo y que alguien en el futuro vea el mismo comportamiento que experimenté y podamos resolverlo mejor!
Sé que ha pasado un tiempo desde que publicaste esto, pero ¿has considerado hacer tu propia implementación de PageStatePersister? PageStatePersister es el componente responsable de formatear los datos de ViewState y ControlState integrados en su página. Si su principal preocupación es la seguridad, puede utilizar los algoritmos de cifrado que desee para garantizar que sus datos permanezcan privados. Según su configuración, suena como si estuviera en un entorno bastante capaz, por lo que, obviamente, primero realice una prueba de carga. También vale la pena mencionar que no tengo ni idea con respecto a la experiencia con la participación en capas de MVC en ViewState cuando se incorpora en un sitio "clásico" de ASP.NET WebForms.
Buena suerte.
segundo
La configuración de la página Web.config no se aplica a la aplicación ASP.Net precompilada con la opción actualizable deshabilitada. Ha pasado un tiempo, pero mi servidor de prueba probablemente lo había implementado con la opción actualizable deshabilitada ... lección aprendida.
Ver MSDN
Question similar que hice, mismo problema.