3

シナリオ:

  1. ユーザー「a」が Web サイトにログインし、図書館のコンピュータからメンバー ディレクトリ ページにアクセスします。
  2. ユーザー「a」はログアウトし、ブラウザを開いたままにします。
  3. ユーザー "b" が同じコンピューターの使用を開始し、戻るボタンを押す ユーザー "a" のメンバー ページと情報を見る
  4. ユーザー「b」はページで何もできませんが、表示するだけです(たとえば、更新を押すとログインにリダイレクトされます。ユーザー「b」がaのデータをまったく表示できるのは、セキュリティ上の問題/バグです.

ログオフ時の現在のコード:

Session.Contents.RemoveAll();
FormsAuthentication.SignOut();
Session.Abandon();
Response.Redirect("~/LogOff.aspx", false);

では、ブラウザにアクセスして、表示が認証されなくなった「表示のみ」のページにアクセスするのを防ぐにはどうすればよいでしょうか。

サイトのブラウザ キャッシュをオフにする方法があることを理解しています

EG: ASP.NET からすべてのブラウザーのブラウザー キャッシュを無効にする

しかし、部分的なポストバック用の更新パネルがあるため、これは干渉/コストがかかりますか?

私が説明した問題に代わるものは他にありますか?

ありがとう

4

2 に答える 2

1

私はこれのためのより原始的な方法を知っています。すべてのページのページ読み込みでアクティブ化されたユーザーを確認する必要があります。現在のユーザーがアクティブ化されたユーザーでない場合は、logof.aspx にリダイレクトする必要があります。これは最善の方法ではありませんが、以前は機能していました。お役に立てば幸いです。

于 2012-07-13T11:41:27.830 に答える
0

ok Session[""] != null は重要なことです。それが null かどうかを確認します。ただし、page_Load イベントがないため、これがマスター ページ/コンテンツ ホルダー ページのキャッシュを無効にするための解決策であり、ページはキャッシュに保存されず、[戻る] ボタンを押すとログイン画面に移動します (そうでない場合)。ログインイン

これらのタグを head セクションの下にコピーします

<meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />

これを分離コード ファイルにコピーします。

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
    Response.Cache.SetNoStore();

あなたは行くのが良いでしょう。

于 2012-07-18T13:09:25.153 に答える