El parameter tampering es un tipo de ataque basado en la alteración de los datos enviados por el servidor en el lado cliente.
El proceso de alteración de los datos por parte del usuario es muy sencillo. Cuando un usuario realiza una petición HTTP (GET o POST), la página HTML obtenida puede contener valores en campos ocultos, los cuáles no son visualizados por parte del navegador pero que son enviados cuando se realiza un submit de dicha página. De la misma forma, cuando los campos del formulario son valores "preseleccionados" (listas desplegables, opciones de radio, etc.) los valores de dichos campos pueden ser manipulados por el usuario y elegir los que él decida consiguiendo así realizar una petición HTTP con los datos por él alterados.
Ejemplo: Supongamos que disponemos de una aplicación, en la que nuestros clientes pueden visualizar los datos de sus diferentes cuentas bancarias, en la que existe un enlace de este tipo:
![]()
En caso de que el cliente haga una petición contra otra dirección (http://www.host.com? cuenta=20), la aplicación (el lado servidor) que recibe la petición tiene que verificar que el cliente tiene permiso para poder visualizar la cuenta que ha recibido desde el cliente.
Lo mismo ocurre con el resto de elementos html no editables que existen en las aplicaciones como listas seleccionables, campos ocultos, checkbox, radio buttons, destinos (página de destino), etc.
Esta vulnerabilidad esta basada en la falta de verificación por parte de http de los datos creados en el servidor y tiene que ser tenida en cuenta por los programadores a la hora de desarrollar nuevas aplicaciones.
Aunque en el ejemplo presentado, el elemento modificado es un link, no hay que olvidar que es posible alterar cualquier tipo de dato existente en una página web (selects, campos hidden, radio buttons, etc.). Es decir, la alteración de los datos no es algo inherente a las peticiones de tipo GET (links) sino que se puede realizar igualmente en peticiones de tipo POST (formularios) con el uso de herramientas de auditoria utilizables por cualquier tipo de usuario que sepa manejar un navegador web.