El libro de Django 1.0

19.1. El tema de la seguridad en la Web

Si aprendes sólo una cosa de este capítulo, que sea esto:

Nunca — bajo ninguna circunstancia — confíes en datos enviados por un navegador.

Nunca sabes quién está del otro lado de esa conexión HTTP. Podría tratarse de uno de tus usuarios, pero con igual facilidad podría tratarse de un malvado cracker buscando un resquicio.

Cualquier dato de cualquier naturaleza que arriba desde el navegador necesita ser tratado con una generosa dosis de paranoia. Esto incluye tanto datos que se encuentran "in band" (por ejemplo enviados desde formularios Web) como "out of band" (por ejemplo cabeceras HTTP, cookies, y otra información de petición). Falsificar los metadatos que añaden los navegadores en la petición es algo trivial.

Todas las vulnerabilidades tratadas en este capítulo derivan directamente de confiar en datos que arriban a través del cable y luego fallar a la hora de limpiar esos datos antes de usarlos. Debes convertir en una práctica general el preguntarte "¿De donde vienen estos datos?"