¿Cómo puedo evitar la falsificación entre sitios?

Una falsificación entre sitios (XSRF o CSRF), también conocida por una variedad de nombres, incluida la falsificación de solicitudes entre sitios, el uso de sesiones y el ataque con un solo clic, es un tipo de explotación de sitios web difícil de prevenir. Funciona engañando a un navegador web para que envíe comandos no autorizados a un servidor remoto. Los ataques de falsificación entre sitios solo funcionan contra usuarios que han iniciado sesión en sitios web con credenciales auténticas; como resultado, cerrar la sesión de los sitios web puede ser una medida preventiva simple y eficaz. Los desarrolladores web pueden usar tokens generados aleatoriamente para ayudar a prevenir este tipo de ataque, pero deben evitar verificar la referencia o confiar en las cookies.

Es común que los exploits de falsificación entre sitios se dirijan a los navegadores web en lo que se conoce como un «ataque adjunto confuso». Al creer que actúa en nombre del usuario, el navegador es engañado para que envíe comandos no autorizados a un servidor remoto. Estos comandos pueden estar ocultos dentro de partes aparentemente inocentes del código de marcado de una página web, lo que significa que un navegador que intenta descargar un archivo de imagen podría estar enviando comandos a un banco, un minorista en línea o un sitio de redes sociales. Algunos navegadores ahora incluyen medidas diseñadas para prevenir ataques de falsificación entre sitios, y los programadores de terceros han creado extensiones o complementos que carecen de estas medidas. También puede ser una buena idea desactivar el correo electrónico del lenguaje de marcado de hipertexto (HTML) en su cliente preferido porque estos programas también son vulnerables a los ataques de falsificación entre sitios.

Dado que los ataques de falsificación entre sitios dependen de los usuarios que han iniciado sesión legítimamente en un sitio web. Teniendo esto en cuenta, una de las formas más fáciles de prevenir un ataque de este tipo es simplemente cerrar la sesión de los sitios que haya terminado de usar. Muchos sitios que tratan con datos confidenciales, incluidos bancos y firmas de corretaje, lo hacen automáticamente después de un cierto período de inactividad. Otros sitios adoptan el enfoque opuesto y permiten que los usuarios inicien sesión de manera persistente durante días o semanas. Aunque le resulte conveniente, lo expone a ataques CSRF. Busque una opción de «recordarme en esta computadora» o «mantenerme conectado» y desactívela, y asegúrese de hacer clic en el enlace de cierre de sesión cuando haya completado una sesión.

Para los desarrolladores web, eliminar las vulnerabilidades de falsificación entre sitios puede ser una tarea particularmente desafiante. La verificación de la información de la referencia y de las cookies no brinda mucha protección porque los exploits CSRF aprovechan las credenciales de los usuarios legítimos y esta información es fácil de falsificar. Un mejor enfoque sería generar aleatoriamente un token de un solo uso cada vez que un usuario inicia sesión y requerir que el token se incluya con cualquier solicitud enviada por el usuario. Para solicitudes importantes como compras o transferencias de fondos, requerir que un usuario vuelva a ingresar el nombre de usuario y la contraseña puede ayudar a garantizar la autenticidad de la solicitud.