如何防止用户“返回”但在 JSP 中注销后保留缓存?

Posted

技术标签:

【中文标题】如何防止用户“返回”但在 JSP 中注销后保留缓存?【英文标题】:How do I prevent users from going 'back' but retain the cache after a logout in JSP? 【发布时间】:2013-10-01 06:41:10 【问题描述】:

我需要启用缓存并禁止用户在退出后返回后查看信息。

我知道,在注销 + 后退按钮时显示的缓存页面是浏览器中的设计。我知道禁用缓存是一种强制注销+返回强制重新验证的方法。

使用 JSP(特别是 CQ5),这是否可能?

我有以下解决方案,但不确定哪种方法最适合我的需求:

    到处禁用缓存。这可行,但不可接受,因为我们使用的发布商将忙于重新更新页面。 “注销”按钮 POST 到页面 A。页面 A 终止会话并将用户转发到页面 B,并带有一些“您已注销”消息。来自页面 B 的“返回”将弹出浏览器提供的有关必须重新发布值的消息。是 = 他们注销(此时无害)并再次转发到页面 B。不 = 他们无害地坐在页面 A。但是,“返回”+“否”+“返回”可能会将它们放在缓存页面上,或者从历史记录中选择仍会显示缓存页面。 “注销”按钮会弹出一个新窗口,询问他们是否确定/警告他们关闭会话。 “我确定”会执行 window.opener.reload() 或 window.opener.close()。但是,如果 javascript 被禁用,我们就完蛋了。 “注销”发布到当前页面。所有页面都检查是否存在一些 POSTd 值。如果存在,请使用“您已注销消息”转发到页面 B。类似于#2。这实际上会将页面重新缓存到“您已注销”页面,但“返回”或历史记录仍将有缓存页面。

有没有办法手动清除用户的缓存,或者强制验证检查甚至在缓存页面上进行?我在这里没有想法......

【问题讨论】:

只有大约 2% 的用户禁用 JavaScript。您的任何用户都这样做吗? 我们可以假设每个人都打开了 JS 并且只是优雅地降级,也许是一条消息说“关闭你的浏览器”,但如果我们采用这种方法,那么其他一个 + 一条消息说要关闭无论如何,您的浏览器似乎更好。 你想如何禁用缓存?你的意思是在浏览器中禁用它? 【参考方案1】:

你的问题是你试图缓存一些应该保密的东西。在密码后面缓存信息是不安全的,而且存在风险。

但是,将页面的通用 html 部分缓存在密码后面可能是有意义的。在这方面,任何登录用户都可以看到的任何内容都可以。只有用户名、地址、电话号码等特定信息是敏感的。

如果您进行单独的 JSON 调用来拉取数据,信息将是轻量级的,但仍然安全,因为它没有缓存在系统上,也没有填充 html 格式等。

如果用户会话由于某种原因被中断,页面还可以智能显示登录挑战,他们重新输入并从上次中断的地方继续,同时仍然保持返回按钮在原位。

我还认为历史记录中是否保留了任何敏感信息,例如 id、操作等,这也可能是一个问题。

只需考虑几件事。

【讨论】:

以上是关于如何防止用户“返回”但在 JSP 中注销后保留缓存?的主要内容,如果未能解决你的问题,请参考以下文章

防止注销后的返回操作

注销后如何防止php返回页面? [关闭]

禁止用户在注销后返回安全页面,jsp with firefox 5.0

注销后如何防止浏览器的后退按钮登录

如何使用servlet和jsp在注销后防止查看页面[重复]

FirebaseAuth当前用户在调用注销后没有返回null?