2010-12-03 365 views
1

由於一些安全約束,要求訪問的頁面不應該列在瀏覽器的歷史記錄中。如何在瀏覽器中跳過被瀏覽頁面的歷史記錄

所以這些頁面不需要顯示在歷史記錄中。

我試過以下方法但失敗。

解決方案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來實現這一點。

回答

3

安全問題時,您不能依賴客戶端。所有瀏覽器對歷史都有不同的實現。您應該依賴服務器端解決方案。

2

你不能用上述四種方法做到這一點。

您唯一能做的就是將您的網址設置爲唯一,並且不能根據您的要求重新訪問。

1

此行爲是瀏覽器而不是服務器的控制下,所以你的選擇是非常有限的。

實現它的一種方法是在網站A上創建一個頁面,該網頁只包含一個加載了您不希望在瀏覽器歷史記錄中看到的網站內容的iframe。

但它仍然是脆弱的。用戶可以使用「在新窗口/標籤中打開鏈接」來打破你的shell。

如果您有權訪問客戶端,一種解決方案是安裝瀏覽器關閉歷史記錄的瀏覽器,並限制訪問瀏覽器首選項,以便用戶無法更改此選項。

0

這種「朦朧安全」的氣味。你應該解決真正的問題(URL中的敏感數據),而不是混淆你的方式。

只是爲了讓URL不包含任何敏感信息(並且請不要通過將整個頁面包裝到iframe中 - 這再次只是一點混淆)。

相關問題