2010-12-03 16 views
1

セキュリティの制約があるため、訪問したページをブラウザの履歴に表示しないようにする必要があります。ブラウザ内のvistedページの履歴をスキップする方法

ページを履歴にまったく表示する必要はありません。

私は以下の方法で試しましたが失敗しました。

解決策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: - >スタートプライベートブラウジング任意のセッションデータを保存しないFirefoxで

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

と同様に、機能のツールがあります。これを実現するためにJavaScriptで行うことができるものはありますか?

答えて

3

セキュリティが重要な場合にクライアント側に頼ることはできません。すべてのブラウザーは、履歴の実装が異なります。あなたはサーバー側のソリューションに頼るべきです。

2

上記の4つの方法をすべて使用して行うことはできません。

あなたが行うことができる唯一のことは、ユニークであなたの要件に応じて再訪することができないようにURLを置くことです。

1

この動作は、ブラウザではなく、サーバーの制御下にあるので、あなたの選択肢は非常に限られています。

これを達成する1つの方法は、ブラウザの履歴に表示したくないサイトのコンテンツを読み込むiframeだけを含むページAを作成することです。

しかし、まだ脆いです。ユーザーは、「新しいウィンドウ/タブでリンクを開く」を使用して、シェルから抜け出すことができます。

クライアントへのアクセス権がある場合は、設定で履歴をオフにしてブラウザをインストールし、ブラウザの設定にアクセスを制限して、ユーザーがこのオプションを変更できないようにすることです。

0

これは「不明瞭なセキュリティ」の匂いがします。実際の問題(URLの機密データ)に取り組むのではなく、難しい問題に取り組むべきです。

URLに機密情報が含まれないようにしてください(また、ページ全体をiframeにラッピングしてください。これはやや難解です)。

関連する問題