Es muy importante que entienda que CUALQUIER entrada de los usuarios debe ser desinfectada de una forma u otra, o de lo contrario, es posible que se esté abriendo para los agujeros de seguridad.
Cualquier entrada podría significar cuadros desplegables u otros datos que usted consideraría estáticos. Ejemplos de esto es simplemente algo devuelto por el usuario como por ejemplo:
- Botones de radio
- cuadros desplegables
- Los datos provienen de complementos como flash, silverlight, etc.
- ¡Simplemente cualquier cosa que se envíe al cliente!
Para ilustrar mejor esto, le animo a descargar un proxy simple que le permitirá mostrar todos los datos que se envían a su servidor cuando envía un formulario. Aquí se muestra un ejemplo de solicitud POST:
POST /api/rest HTTP/1.1
Host: api.example.com
User-agent: Googlebot/2.1 (+http://www.google.com/bot.html)
Referer: example.com/admin.php
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Cookie: username=karrax&password=855425718dfe4a50f6f0bbb9335d3c3b&userid=591
dropdownBox=string&staticTextField=string&hiddenElement=string
Cualquier cosa en la que tenga que confiar en la lógica de su negocio proveniente del lado del cliente debe ser limpiada .
Recuerde que esto se aplica a cualquier cosa que provenga del lado del cliente. ¡NO SE PUEDE CONFIANZA! ... Incluso si es simplemente una cadena que se devuelve al cliente (por ejemplo, un nombre de usuario), debe limpiarse para que no sea vulnerable a los scripts entre sitios y otros vectores de ataque.
Editar : como @Avid señaló en los comentarios, también es imprescindible saber que los datos que se transmiten a través de las cookies también se envían desde el lado del cliente, lo que los hace vulnerables a la manipulación. Esto también se aplica a cualquier otro campo en los encabezados (o cualquier cosa que provenga del cliente) como el agente de usuario o el campo de referencia para nombrar algunos.
En el ejemplo anterior, la solicitud HTTP puede frustrar algunos sistemas de seguridad si se basan en el campo de referencia para, por ejemplo, autorizar al usuario. El ejemplo también hace que parezca que es el bot de Google que en algunas circunstancias puede proporcionar contenido diferente en la página que solicita ( source ).