12 abril, 2008

CSRF o Cross Site Request Forgery

... o Falsificación de peticiones entre sitios. Se trata de una técnica prácticamente desconocida pero extremadamente peligrosa que permite aprovechar que tenemos abierta una sesión en el navegador con un sitio fiable (un banco, gmail, ...) para que desde el código HTML de una página que estemos visitando se cree una petición como la siguiente:

<img src="https://our.example.com/change_account
?paytype=debit
&paytype_id=1234
&paytype_field_1=123456789 // el numero de cuenta
&paytype_field_2=12345678 // el código de banco
&paytype_field_3=Richie+Rich // el propietario de la cuenta
&paytype_field_4=BancoDeEspaña // el nombre del banco
&op=editpaytype.save
&confirmmode=" />


que podría tener la consecuencia de enviar una petición (legítima en apariencia porque procede de un navegador en el que mantenemos una sesión válida abierta) a la aplicación web del banco para que realice una operación sin que sea en ningún momento evidente. Los riesgos que supone esta técnica son enormes (pueden acusar a alguien de acceder a sites de pornografía infantil o habilitar un filtro en el correo para que todos los mensajes se reenvien a una tercera cuenta y, entre otras cosas, robar dominios o cambiar contraseñas gracias a los mensajes de confirmación).

Se recomienda no mantener abiertas las sesiones de aplicaciones web con datos sensibles mientras se navega y no navegar con el mismo navegador en que se visualicen dichas operaciones (usar Prism es una buena idea). A la hora de programar aplicaciones web, es buena idea incorporar tokens variables a todas las peticiones que incluyan, por ejemplo, la fecha y la hora para ser generados con el fin de detectar peticiones que no provengan de la propia aplicación web.

Links:

Publicar un comentario en la entrada

Últimos links en indiza.com