Seguridad de la infraestructura de interfaz de usuario web: falsificación de solicitud en sitios cruzados
La infraestructura de interfaz de usuario web ofrece protección de la aplicación frente a CSRF (cross-Site Request Forgery o Falsificación de solicitud en sitios cruzados), que es un tipo de exploit malicioso que entra en un sitio web en el que mandatos no autorizados son transmitidos por un usuario en el cual 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 en todas las solicitudes AJAX y dentro de los programas de utilidades de la infraestructura de interfaz de usuario web.
- 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.