我已将以下代码添加到我的母版页 (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 触发更新面板刷新。由于这将始终返回到服务器,因此未经身份验证/过期的用户将被拒之门外。这是一个相当大的工作量,但我想我应该把它扔掉。
关于c# - 警告 : Page Has Expired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/391485/