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

问题描述:

由于一些安全约束,要求访问的页面不应该列在浏览器的历史记录中。如何在浏览器中跳过被浏览页面的历史记录

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

我试过以下方法但失败。

解决方案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中,有功能性工具 - >启动不存储任何会话数据隐私浏览。有没有什么可以通过JavaScript来实现这一点。

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

你不能用上述四种方法做到这一点。

您唯一能做的就是将您的网址设置为唯一,并且不能根据您的要求重新访问。

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

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

此行为是浏览器而不是服务器的控制下,所以你的选择是非常有限的。

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

但它仍然是脆弱的。用户可以使用“在新窗口/标签中打开链接”来打破你的shell。

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

这种“朦胧安全”的气味。你应该解决真正的问题(URL中的敏感数据),而不是混淆你的方式。

只是为了让URL不包含任何敏感信息(并且请不要通过将整个页面包装到iframe中 - 这再次只是一点混淆)。