如何在浏览器中跳过访问过的页面的历史记录

时间:2010-12-03 13:46:38

标签: java security caching jsp browser

由于某些安全限制,要求访问的页面不应列在浏览器的历史记录中。

所以这些页面根本不需要在历史中显示。

我尝试过以下方法,但失败了。

解决方案1:

1. <%
2. session.invalidate();
3. response.setHeader("Cache-Control","no-cache");
4. response.setHeader("Cache-Control","no-store");
5. response.setDateHeader("Expires", 0);
6. response.sendRedirect("home.jsp");
7. %>

解决方案2:

<%
Response.Cache.SetExpires(DateTime.Parse(DateTime.Now.ToString()))
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetNoStore()
Response.AppendHeader("Pragma", "no-cache")
%>

解决方案3:

<body onload="history.forward()">

解决方案4:

<%
response.setDateHeader("Last-Modified", System.currentTimeMillis());
%>

在Firefox中,有功能工具 - &gt;启动私人浏览,不存储任何会话数据。有没有什么可以通过JavaScript来实现这一目标。

5 个答案:

答案 0 :(得分:3)

安全问题时,您不能依赖客户端。所有浏览器都有不同的历史实现。您应该依赖服务器端解决方案。

答案 1 :(得分:2)

你无法使用以上四种方式来做到这一点。

您唯一可以做的就是将您的网址设置为唯一且无法根据您的要求重新访问。

答案 2 :(得分:1)

此行为受浏览器而非服务器的控制,因此您的选项非常有限。

实现它的一种方法是在网站A上创建一个页面,其中只包含一个iframe,用于加载您不希望在浏览器历史记录中看到的网站内容。

但它仍然很脆弱。用户可以使用“在新窗口/选项卡中打开链接”来打破shell。

如果您有权访问客户端,一种解决方案是在设置中安装已关闭历史记录的浏览器,并限制对浏览器首选项的访问权限,以便用户无法更改此选项。

答案 3 :(得分:0)

您不能影响浏览器的历史记录机制。您可以做的最好的事情是确保页面没有被缓存,并且可能通过使URL无意义的乱码来“伪装”它。

http://wiki.apache.org/struts/BrowserBackAndSecurity#Data_Caching_vs._Browser_Session_History

答案 4 :(得分:0)

这种气味“默默无闻”。您应该解决真正的问题(URL中的敏感数据),而不是模糊处理它。

只需将URL设置为不包含任何敏感信息(请不要通过将整个页面包装在iframe中来实现 - 这再次只是一些模糊处理。)