一个人在登出后点击“返回”按钮,有没有一种方法可以防止页面重新加载?(涉及IT技术)

23

我有一些需要登录并显示敏感信息的网站。

用户进入网页后,被提示要求登录,在登录成功后才能查看信息。

用户注销网站并重定向到登录页面。

然后,用户可以单击“返回”按钮并立即返回包含敏感信息的页面。由于浏览器只是将其视为已呈现的HTML,所以会毫不费力地显示给他们。

有没有办法防止当用户从登出屏幕单击“返回”按钮时显示该信息?我不是想禁用返回按钮本身,而是想防止敏感信息因为用户已注销而再次被显示。

假设上述场景在使用ASP.NET和表单身份验证的情况下(因此,当用户访问第一个页面(即所需页面)时,会重定向到登录页面 - 如果这会产生影响的话)。

16个回答

13

简单回答是无法保证安全性。

然而,可以实施很多技巧,使用户难以返回并显示敏感数据。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");

这将禁用客户端缓存,但并非所有浏览器都支持。

如果您有使用AJAX的选项,则可以使用更新面板从客户端代码检索敏感数据,因此在点击后退按钮时,除非客户端仍然登录,否则不会显示该数据。


2
更长的答案:一个恶意的人如果能够访问目标机器并点击返回按钮,那么他很可能能够规避这种措施。这只会阻止最普通的获取信息尝试。一旦目标机器获得了信息,那么它就处于控制之下,而不是你。 - Dustman
一个高级的恶意人士可以从开源代码中构建自己的浏览器,忽略任何指令。 - ttulinsky

9

缓存和历史记录是独立的,它们互不影响。

唯一的例外适用于银行是HTTPS和Cache-Control:must-revalidate的组合会在浏览历史记录时强制刷新页面。

在普通HTTP中,除了利用浏览器漏洞之外,没有其他方法可以实现此功能。

您可以使用检查document.cookie并在设置“killer” cookie时重定向的Javascript进行黑客攻击,但我想当浏览器未按预期精确设置/清除cookie时,这可能会严重出错。


3

来自aspdev.org:

在Page_Load事件处理程序顶部添加以下行,您的ASP.NET页面将不会被缓存在用户浏览器中:

Response.Cache.SetCacheability(HttpCacheability.NoCache)

设置此属性可确保如果用户按下后退按钮,则内容将消失,如果他按下“刷新”按钮,则会重定向到登录页面。


1
你可以编写一个 JavaScript 函数来进行快速服务器检查(ajax),如果用户未登录,则擦除当前页面并替换为一条消息。这显然会受到 JavaScript 关闭的用户攻击,但这种情况相当罕见。好处是,这既适用于浏览器技术,也适用于服务器技术(asp/php 等)。

1
DannySmurf,关于控制缓存方面,元素是非常不可靠的,特别是Pragma更是如此。参考

1

dannyp和其他人,no-cache并不能阻止缓存存储敏感资源。它仅仅意味着缓存在未经重新验证之前无法提供已存储的资源。如果您希望防止敏感资源被缓存,您需要使用no-store指令。


0

我只是想到了银行的例子。

我的银行页面上有这个:

<meta http-equiv="expires" content="0" />

我想这应该是关于这个的。


0

我不知道在ASP.NET中该如何操作,但是在PHP中我会这样做:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

这将强制浏览器重新检查该项,因此应触发您的身份验证检查,拒绝用户访问。


0

为了完整性:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));

0

您可以将包含敏感信息的网页作为HTTP POST返回,然后在大多数情况下,浏览器会提示您是否要重新提交数据。(不幸的是,我找不到这种行为的官方来源。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接