我已将以下代码添加到我的母版页(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触发更新面板刷新.由于这将始终返回到服务器,因此未经身份验证/过期的用户将被拒绝.这是一个相当重要的工作量,但我想我会把它扔出去.