题
我已将以下代码添加到我的母版页 (Page_Load) 中,因此一旦用户注销,他们将无法使用后退按钮查看他们之前所在的页面。
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.Expires = -1;
Response.CacheControl = "no-cache";
问题是,我的用户希望在登录应用程序时能够使用浏览器后退按钮。当我注释掉代码以不缓存页面时,他们可以使用后退按钮,但是一旦注销,他们可以使用后退按钮查看他们所在的上一页,这会导致安全风险。
有没有人有任何建议,以便他们可以使用应用程序中的浏览器后退按钮,但一旦注销,他们就无法返回应用程序?
解决方案
是为了防止非认证用户从暗中访问之前使用过的电脑,看到什么身份验证的用户在做的目的是什么?如果是后者,那么你应该将用户重定向到具有window.close注销页面();与有关此是一个的要求强>强语言沿着命令。现在,这是不是铁定的:将IE的问的,如果他们愿意让应用程序关闭窗口,其他浏览器完全忽略请求的用户。然而,在正确的安全环境中,我认为它确实提供了一个显著除了你的安全策略 - 尽管是一个主要的文化品种(它有助于培养成员遵守的规则)
如果你想“一次性通过,和你做”安全类型,那么恐怕锁定了高速缓存或将“window.forward()”在每个页面(这可以阻止所有使用后退按钮)是你唯一的选择。
另外一件事情:AJAX提供了一些工具,帮助为好。你可以把一个更新面板上的敏感信息,并有JavaScript的触发更新面板刷新页面加载。由于这会回去到服务器,未经身份验证/过期的用户将被拒之门外。这是一个相当显著的工作量承担,但我想我会扔在那里。
其他提示
YUI提供了一种容易地控制浏览器的历史以编程冲URL输入到历史。看看YUI的浏览器历史记录经理。
不隶属于 StackOverflow