html - pestaña - La forma más fácil de evitar que el botón Atrás de su navegador muestre datos seguros después de que un usuario cierre la sesión?
evento cerrar pestaña js (6)
En una aplicación web normal con inicio de sesión y datos seguros, ¿cuál es una forma fácil de proteger esos datos y evitar que se vean utilizando el botón Atrás del navegador, una vez que el usuario cierra la sesión?
no hay una solucion perfecta
Aunque hay algunas soluciones muy razonables para esto (encabezados de control de caché, javascript, etc.), debe tener en cuenta que una vez que ha enviado algo a un cliente, está fuera de su control. No puede garantizar que el cliente tratará los datos de la manera que le gustaría .
Por ejemplo:
- podría haber un error en un navegador
- un navegador podría permitir a los usuarios desactivar el control de caché
- un usuario puede estar ejecutándose con javascript deshabilitado
Lo siento :(
Establezca los encabezados de almacenamiento en caché para no permitir el almacenamiento en caché de la página. Esto debería evitar que incluso la página se muestre cuando el usuario presiona el botón Atrás a menos que esté conectado.
Depende de su solución de inicio de sesión (SSO - Windows Live / OpenID vs homegrown, donde se almacena información de inicio de sesión, etc.) ... Dado que ''volver'' generalmente no solicita la página nuevamente, sugiero borrar los formularios en JavaScript (OnLoad ) En el lado del servidor, puede llenarlos (carga de página). Borre su sesión y visualice el estado al finalizar la sesión.
Los encabezados de control de caché (Expira, Cache-Control, ETag) generalmente evitarán el almacenamiento en caché de la página, lo que obligará al navegador a solicitar una copia nueva y podrá verificar el estado de la sesión. Sin embargo, a veces se ignoran en interés del "rendimiento".
Hay dos enfoques de Javascript que podrían ayudarlo:
- Utilice el evento de salida de su página (onEnviar formularios o onUnload para otras páginas) para borrar el contenido al salir de las páginas.
- Utilice document.location.replace () en lugar de enlaces normales cuando se mueve entre páginas para no dejar un rastro en el historial del navegador al que el usuario podría volver.
Sin embargo, es probable que ambos tengan un efecto bastante horrible sobre la usabilidad.
Aquí hay una útil guía de almacenamiento en caché del navegador .
Desea establecer los encabezados de control de caché y fecha de vencimiento (estableciendo una fecha en el pasado), por ej.
Cache-Control: no-cache
Expires: Fri, 31 Dec 1998 12:00:00 GMT
He probado este código VB.NET en IE y Firefox.
Response.Cache.SetAllowResponseInBrowserHistory (False) Response.Cache.SetCacheability (HttpCacheability.NoCache) Response.Cache.SetNoStore () Response.Expires = 0
Este es el truco, pero estoy de acuerdo con las otras respuestas en las que no se puede garantizar el comportamiento del navegador del cliente.