Joven hacker sonriendo

Configurar Tiempo de Sesión

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en Java al configurar el tiempo de sesión. Para desarrollar una aplicación segura es recomendable configurar un tiempo de sesión no mayor a 5 minutos.

Necesidad

Configurar tiempo de vida de la sesión en Java EE.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. La aplicación está desarrollada en Java EE versión 1.4 o superior.

  2. El sistema debe cerrar una sesión si se presenta un tiempo de inactividad por parte del usuario.[1]

Solución

La conexión que se establece entre un usuario y un servidor Web se denomina sesión. Las sesiones permiten almacenar información a lo largo de diferentes páginas, pudiendo acceder a ella en el momento que se requiera. Dentro de las sesiones es posible guardar cierta información la primera vez que el usuario visita la página, y dicha información puede ser mostrada en una visita posterior sin necesidad de interactuar con una base de datos o un archivo externo. Como estas sesiones son manejadas por lado del servidor, no se corre el riesgo de que el usuario las pueda alterar. En otras palabras, una sesión puede abarcar múltiples páginas Web y su seguimiento se realizará mediante la administración del estado sin que el usuario tenga que intervenir en ello.

Otra cosa, las sesiones manejan un tiempo de vida el cual determina el tiempo que puede permanecer un usuario inactivo antes de que termine o finalice la sesión o de que el usuario tenga que iniciar sesión de nuevo.

  1. En Java las sesiones están representadas por el objeto HttpSession, el cual está presente en el paquete javax.servlet.http.

  2. Para poder acceder a una sesión, se debe invocar el método getSession del objetoHttpServletRequest. Este método devuelve una referencia de la sesión actual asociada con la solicitud [2].

    doPost.java
    1
    2
    3
    4
    public void doPost (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
        HttpSession session = request.getSession();
    }
    
  3. Para establecer el tiempo máximo de vida de la sesión se debe utilizar el método setMaxInactiveInterval (su valor está dado en segundos) del objeto HttpSession [3]. Se recomienda, por seguridad, que el tiempo establecido no deba ser superior a cinco minutos.

    1
    2
    HttpSession session = request.getSession();
    session.setMaxInactiveInterval(300);
    
  4. Una forma recomendada de realizar esta configuración es utilizando el archivo de configuración de la aplicación /WEBINF/web.xml empleando el elemento session-config de la siguiente manera [4]:

    1
    2
    3
    <session-config>
     <session-timeout>5</session-timeout>
    </session-config>
    
  5. Para este caso el timeout de la sesión está especificado en minutos.




Haz un comentario

Estado de los servicios - Términos de Uso