Falsificación de solicitud entre sitios
La infraestructura subyacente proporciona protección para la aplicación contra la falsificación de solicitud entre sitios (CSRF), que explota de forma malintencionada un sitio web donde se transmiten mandatos no autorizados de un usuario en el que el sitio web confía.
CSRF (también denominado XSRF) es distinto de script entre sitios (CSS o XSS), que explota la confianza que un usuario tiene en un sitio en particular. CSRF también se conoce como ataque de un clic, secuestro de sesión o cabalgamiento de sesión.
CSRF incluye un enlace o script en una página que accede a un sitio en el que el usuario se ha autenticado (o se supone que se ha autenticado). Por ejemplo, un usuario A puede estar mirando un foro en el que un usuario B ha publicado un mensaje. Con CSRF, el usuario B puede crear el siguiente elemento de imagen HTML que, en lugar de ser un archivo de imagen, hace referencia a un script en el sitio web de la cuenta bancaria del usuario A y solicita la extracción de 1.000.000 de euros:
<img src="http://bank.example/withdraw?amount=1000000&for=USER-B">
Si el banco del usuario A conserva la información de autenticación en una cookie, y si la cookie no ha expirado, el intento del navegador del usuario A para cargar la imagen enviará el formulario de extracción de dinero con la cookie de autenticación y autorizará una transacción sin la aprobación del usuario A.
- Debido a la política del navegador, las cookies de autenticación se envían al servidor del banco aunque la solicitud se origine en otro sitio web.
- El banco del usuario A almacena la información de autenticación en una cookie y confía totalmente en las cookies en relación con la autenticación.
- El banco del usuario A no distingue entre las solicitudes GET y POST.
- Cuando el inicio de sesión ha finalizado, se establece una señal de nueva creación para la sesión (para fines de validación). Esta señal está disponible en el lado del cliente de la aplicación.
- La señal se utiliza de las siguientes maneras:
- Esta señal se utiliza para todas las solicitudes AJAX y en los programas de utilidad de la infraestructura subyacente.
- Cuando se realiza una solicitud POST o GET en el servidor, la aplicación valida automáticamente que la señal de CSRF esté disponible en la solicitud.