HTTP es un protocolo sin estado. Sin embargo, cuando el usuario inicia sesión en una aplicación web, le gusta que se conserve cierta información de la sesión, de modo que no tenga que iniciar sesión nuevamente cuando quiera ir y venir entre las páginas web de la misma aplicación.
Asociado a cada sesión es una vida útil. Además, algunas sesiones son "transitorias", lo que significa que se cierran tan pronto como el usuario cierra la página web (incluso si la sesión aún no ha finalizado).
Muchos servidores de aplicaciones proporcionan la noción de sesión. Por ejemplo, la documentación de WebLogic (con la que estamos trabajando actualmente) trata sobre "Uso de sesiones y persistencia de sesión" (consulte el Capítulo 10 de Desarrollo de aplicaciones web, servlets y JSP para Oracle WebLogic Server 11g versión 1 ).
La pregunta es:
Dada la variedad de posibles ataques en las sesiones (secuestro de sesión, fijación de sesión, etc.), ¿es suficiente confiar en las funciones de administración de sesión del servidor de aplicaciones? En otras palabras, ¿puede la aplicación ser "independiente de la sesión" y todo puede manejarse con la configuración adecuada del servidor de aplicaciones? (También se puede suponer que las conexiones se realizan a través de una conexión HTTPS implementada correctamente).
Creo que la respuesta es NO, pero necesito una justificación concreta en cuanto a lo que podemos y lo que no podemos esperar del servidor de aplicaciones.
Es altamente apreciado el apuntar a las mejores prácticas y posibles amenazas / ataques en la administración de sesiones.
Editar (en relación con el comentario de Andrew): En su respuesta, suponga que todo lo demás (firewall, sistema de archivos, base de datos, etc.) está configurado correctamente. Ahora, ¿se puede configurar el servidor de aplicaciones de tal manera que la aplicación en sí no necesite administrar las sesiones? Es decir, ¿podemos escribir una aplicación totalmente "independiente de la sesión" y colocarla en un entorno que (mediante el uso adecuado del servidor de aplicaciones, el firewall, etc.) evite el secuestro de la sesión, la reparación de la sesión y otros ataques relacionados con la sesión?