4

我已将以下代码添加到我的母版页 (Page_Load),因此一旦用户注销,他们将无法使用后退按钮查看他们之前所在的页面。

 Response.Buffer = true;
 Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
 Response.Expires = -1;
 Response.CacheControl = "no-cache";

问题是,我的用户希望能够在登录到应用程序时使用浏览器后退按钮。当我将代码注释掉以不缓存页面时,他们可以使用后退按钮,但一旦他们注销,他们可以使用后退按钮查看他们所在的上一页,这会导致安全风险。

有没有人有任何建议,以便他们可以使用应用程序中的浏览器后退按钮,但是一旦他们退出,他们就无法返回应用程序?

4

3 回答 3

2

目的是防止未经身份验证的用户偷偷访问以前使用的计算机并查看经过身份验证的用户在做什么?如果是后者,那么您应该将用户重定向到具有 window.close(); 的注销页面;命令以及关于这是一项要求的强有力的语言。现在,这不是铁定的:IE 会询问用户是否愿意让应用程序关闭窗口,而其他浏览器则完全忽略该请求。但是,在正确的安全环境中,我认为它确实为您的安全策略提供了重要的补充——尽管主要是文化多样性(它有助于文化成员遵守规则)。

如果您想要“一次性完成”类型的安全性,那么我担心锁定缓存或将“window.forward()”添加到每个页面(这会阻止所有使用后退按钮)是您的只有真正的选择。

另一件事:AJAX 也提供了一些有用的工具。您可以将敏感信息放在更新面板上,并让页面加载 javascript 触发更新面板刷新。由于这将始终返回到服务器,因此将拒绝未经身份验证/过期的用户。这是一个相当大的工作量,但我想我会把它扔在那里。

于 2008-12-24T14:22:55.133 回答
0

YUI 提供了一种轻松控制浏览器历史记录的方法,以编程方式将 URL 插入历史记录。看看 YUI浏览器历史管理器。

于 2009-01-06T16:20:04.457 回答