Estoy trabajando en probar la protección CSRF para una de nuestras aplicaciones web. Tenemos un caso de prueba como el siguiente:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="https://webapp.example.com/path/to/page.do" method="post">
<input type="hidden" name="actionTask" value="reject">
<input type="submit" value="Submit request">
</form>
</body>
</html>
Que es una página simple con un campo oculto y un botón de envío. Si el usuario tiene una sesión válida (se registra en la aplicación web), abre esta página CSRF y hace clic en "enviar", la solicitud se envía y lleva al usuario a una página de resultados en la aplicación web.
Esta es una aplicación web basada en JSP que utiliza JSESSIONID para rastrear la sesión de los usuarios (más cookies para autenticación). Cuando rastreo los métodos HTTP, veo que Firefox (el navegador utilizado para probar) está de hecho enviando JSESSIONID como uno de los encabezados. ¿Cómo obtiene Firefox el valor correcto para JSESSIONID?
Nota: Me doy cuenta de que, como Firefox tiene una cookie para una sesión válida con la aplicación, puede usarla. Pero, ¿cómo determina JSESSIONID? Puedo iniciar sesión y cerrar las ventanas del navegador y la página sigue funcionando siempre que mi sesión sea válida. Parece que el servidor le está diciendo al navegador qué es JSESSIONID?
edit1: esta pregunta no es específica de CSRF, sino simplemente cómo el navegador determina JSESSIONID cuando tiene una sesión válida abierta.