none
Validaciones de argumentos WebForm modificados o eliminados. RRS feed

  • Pregunta

  • Tengo una pagina que tiene un boton el cual realiza una operacion. El tema es como puedo validar que alguien malintencionado no me pueda generar un error interceptando el POST enviado y modificandolo, lo que hago es capturar el trafico y le borro por ejemplo el valor _EVENTVALIDATION y al enviar el POST nuevamente al servidor, mi aplicaion da la siguiente Excepción.

    Error de servidor en la aplicación '/'.


    La información de estado no es válida para esta página y podría estar dañada.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.Web.HttpException: La información de estado no es válida para esta página y podría estar dañada.

    Error de código fuente:
    [Líneas de código fuente no relevantes]

    Archivo de origen: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\7efdfa75\fde2b48e\App_Web_3vqrgrrt.0.cs    Línea: 0

    Seguimiento de la pila:
    [ViewStateException: Estado de vista no válido. 
    	Client IP: ::1
    	Port: 
    	Referer: http://localhost:52225/WondersoftAutorizacionToken.aspx
    	Path: /WondersoftAutorizacionToken.aspx
    	User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36
    	ViewState: /wEdAAfh/t+Gxd9aR3W61qiXcXnTEOgvVgSSROG2v4VyQsjy3fx+ii21yjH1QrdtnVL6MeM/iZ+2nDHBT8zHVBqh42haabnieufQuO0hSThlxSXADhL6ik48FWzXQ7y+pj78VQm5abarSNZKeaT6hv5veWkrVvOvxf/3K/l3k1AN6LOKlhyMw1VyWupd+S5R0Zcw+5A=]
    
    [HttpException (0x80004005): La información de estado no es válida para esta página y podría estar dañada.]
       System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +116
       System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded() +9749046
       System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +63
       System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey, NameValueCollection postCollection) +126
       System.Web.UI.WebControls.TextBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +15
       System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +457
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6569
       System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +245
       System.Web.UI.Page.ProcessRequest() +72
       System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +22
       System.Web.UI.Page.ProcessRequest(HttpContext context) +58
       ASP.wondersoftautorizaciontoken_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\7efdfa75\fde2b48e\App_Web_3vqrgrrt.0.cs:0
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +188
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
    


    Información de versión: Versión de Microsoft .NET Framework:4.0.30319; Versión ASP.NET:4.6.1590.0 

    Desde ya muchas Gracias

    miércoles, 31 de mayo de 2017 14:07

Respuestas

  • Bien lo que hice fue poner un TRY CATCH general en cada evento (a pesar de que no exista error posible), y en el CATCH redirigirlo a una nueva pagina de error.

    Gracias igualmente.

    miércoles, 31 de mayo de 2017 21:00

Todas las respuestas

  • Estos son los datos que envia el POST

    __EVENTTARGET=ButtonPagar&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTE5ODUyODA3ODFkZE07FRp3IUJT1tiQYTFrxEaUhqhNS9YlS%2FVYxQ9y3qsj&__VIEWSTATEGENERATOR=63F0465B&__EVENTVALIDATION=%2FwEdAAfh%2Ft%2BGxd9aR3W61qiXcXnTEOgvVgSSROG2v4VyQsjy3fx%2Bii21yjH1QrdtnVL6MeM%2FiZ%2B2nDHBT8zHVBqh42haabnieufQuO0hSThlxSXADhL6ik48FWzXQ7y%2Bpj78VQm5abarSNZKeaT6hv5veWkrVvOvxf%2F3K%2Fl3k1AN6LOKlhyMw1VyWupd%2BS5R0Zcw%2B5A%3D&TextBoxNroTarjeta=0000000000000000&TextBoxMesVenc=00&TextBoxAnoVenc=00&TextBoxCodSeg=000

    Como podria validar para que si me borran algun dato no me de excepcion.?

    miércoles, 31 de mayo de 2017 14:20
  • hola

    Pero para eso deberias habilitar el canal encriptado de http, o sea https por medio de SSL usando certificados

    no necesitas hacer nada especial para segurizar el canal si habilitas https, ya que esto crea un canal seguro al usar certificados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 31 de mayo de 2017 18:09
  • Si, en el ambiente ideal si, pero estamos pasando una auditoria y estan realizando pruebas de stress y de posibles bulnerabilidades, donde estan esnifando la red (realizando pruebas de seguridad) y al reproducir este error la pagina queda asi y deberia de interceptarlo para que no explote de esta forma.
    miércoles, 31 de mayo de 2017 18:43
  • Bien lo que hice fue poner un TRY CATCH general en cada evento (a pesar de que no exista error posible), y en el CATCH redirigirlo a una nueva pagina de error.

    Gracias igualmente.

    miércoles, 31 de mayo de 2017 21:00