¿Es posible inyectar valores en una lista desplegable?

17

Diga que una página ASP.NET, o cualquier página html para esa materia, tiene una lista desplegable con un montón de precios. Al publicar la página, el código analiza la selección de la lista desplegable para un cálculo. ¿Es posible que alguien altere los valores y publique la página sin que el servidor sepa que la página ha sido manipulada?

Actualizar

Me han dicho que ASP.NET ofrece alguna protección contra esto con Page.EnableEventValidation Property . Con esto habilitado (habilitado de forma predeterminada), intentar cambiar el valor de un control ASP generará un error:

  

Argumento de devolución de llamada o devolución de llamada no válido. La validación de eventos se habilita usando la configuración o <% @ Page EnableEventValidation="true"% > en una pagina Por motivos de seguridad, esta característica verifica que los argumentos de los eventos de devolución de llamada o devolución de llamada se originan en el control del servidor que originalmente los representó. Si los datos son válidos y esperados, use el método ClientScriptManager.RegisterForEventValidation para registrar los datos de devolución o devolución de llamada para la validación.

    
pregunta drobison 11.09.2013 - 18:29
fuente

5 respuestas

32

Las listas desplegables son una construcción HTML / UI. No hay ningún concepto de este tipo en HTTP, que es cómo el cliente y el servidor se comunican entre sí.

Entonces, si bien, un cliente podría alterar la página, eso no es absolutamente necesario, porque en realidad no es necesario que haya una página. Al final, un cliente simplemente envía una solicitud de HTTP al servidor y contiene algunos datos, y esos datos podrían ser los valores ingresados en el formulario HTML, o podrían ser valores arbitrarios elegidos al gusto del usuario.

La línea de fondo es, no puedes confiar en la entrada . Cualquier cosa enviada por el cliente debe ser sospechosa, no hay garantía de que sea lo que usted espera y debe validarse en el servidor antes de la aceptación.

    
respondido por el Xander 11.09.2013 - 18:37
fuente
9

Simplemente, sí se puede hacer. El usuario descarga el HTML, modifica el contenido y lo envía con contenido modificado.

Asegúrese de que está validando todos los datos del formulario antes de que llegue a su base de datos. Dependiendo de su marco web, generalmente hay una manera de limitar las opciones exactamente a lo que especifique.

    
respondido por el baordog 11.09.2013 - 19:05
fuente
4

Si instala un proxy en su cliente, como Paros, podría atrapar fácilmente la respuesta de su navegador antes de que ingrese al servidor y editar cualquier valor, incluida la opción elegida del elemento de formulario desplegable. Una vez que haya visto lo fácil que es esto, puede imaginar fácilmente cómo podría hacer esto de varias formas programáticas, incluidos los complementos en el navegador si su navegador estuviera comprometido.

La forma absolutamente única de protegerse contra esto es verificar que el valor una vez que llega al servidor, es decir, que el valor es válido.

Esto se aplica a todos los datos enviados al servidor, datos de formulario, datos de ruta de GET de URL, incluso encabezados.

La seguridad basada en navegador / cliente no es seguridad en absoluto.

    
respondido por el David Scholefield 11.09.2013 - 22:28
fuente
3

Si está utilizando Google Chrome, simplemente haga clic con el botón derecho e inspeccione el elemento .... Luego vaya a esa etiqueta de selección en particular, haga clic con el botón derecho y "Editar como html" para agregar una nueva opción.

    
respondido por el Vishal Chawla 12.09.2013 - 08:00
fuente
0

podrían inyectar los datos en la respuesta, pero si el código del lado del servidor no está buscando lo que están dando, ahí es donde se detiene la inyección. La validación en el código del lado del servidor es la mejor.

    
respondido por el Malachi 11.09.2013 - 19:40
fuente

Lea otras preguntas en las etiquetas