En este grupo En todos

Foro de Java



Problema de seguridad con navegación hacia atrás

Escrito por Juan Pablo
el 29/08/2008

Hola! A ver si me hago entender bien


Trabajo con Struts y necesito que el acceso de los usuarios a sus "cuentas" sea seguro. Tengo un formulario para la identificación de los usuarios y seguidamente se ejecuta una action para verificar la correcta identificación. Esa action se llama "identificarUsuario. Do". El usuario identificado se mueve a su antojo por su cuenta, se desloguea adecuadamente borrándose todos los datos de su sesión, y si después otro usuario pulsa "atrás" para navegar hacia atrás haciendo un history. Forward y lanzar la action "identificarUsuario. Do", entra en la cuenta del anterior usuario cuando no debería poder.


La razón por la que ocurre esto la conozco, y es que aunque no permito almacenar páginas en la caché para que todas se pidan al servidor, en dicha petición "identificarUsuario. Do" se utilizan los mismos datos que utilizó el anterior usuario en su formulario (id de usuario y contraseña), por lo que se concede un acceso correcto. ¿Cómo evito esto? ¿Cómo se puede diferenciar entre un acceso correcto a través de formulario y un acceso no legal con una navegación "atrás", si en ambas peticiones se envían los mismos datos?

Es curioso, pero si introduzco "identificarUsuario. Do" en la barra de direcciones la petición se envía vacía, por lo que no se concede el acceso porque falla la validación (campos vacíos), pero... ¿Por qué con la navegación "atrás" se utilizan los mismos datos introducidos por el último usuario aunque en caché no haya nada?

Gracias