Plataforma heredada

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.

En un caso así, el problema se puede resumir en los tres puntos siguientes:
  • 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.
La protección contra CSRF en la infraestructura subyacente no se aplica al primer punto, puesto que es una política de navegador. Pero sí se aplica a los puntos segundo y tercero al utilizar en ambos casos una cookie y una señal adicional para la autenticación. Los ataques CSRF se suelen prevenir comprobando siempre que la señal sea exclusiva en cada solicitud que llega al servidor. En la infraestructura subyacente, la señal se utiliza de la manera siguiente:
  1. 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.
  2. 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.