ユーザー名とパスワードが必要なアプリケーションがあります。ユーザーがログアウト ボタンをクリックすると、以下が実行されます。
private void LogOut()
{
Session["SessionName"] = null;
Session.Remove("SessionName");
System.Web.Security.FormsAuthentication.SignOut();
Response.Cookies.Remove("AuthCookie");
HttpCookie c = new HttpCookie("AuthCookie");
c.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(c);
Session.Clear();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
Session.Abandon();
Response.Redirect("~/user/login.aspx");
}
問題は、セキュリティをテストするときです。データベース内のデータを変更するページに移動すると、Fiddlerを使用してこの要求を「記録」できます。 アプリケーションからログアウトした後も、まだログインしている場合と同じように、Fiddler でこの要求を再生できます。実際、コードを中断しても、すべての Cookie とセッション情報を表示できます。セッションが (タイムアウトにより) 期限切れになった後にのみ、実際のセッションはなくなります。
Cookie の有効期限が切れてセッションを中止した後も、この情報を確認できるのはなぜですか? ユーザーがログアウト ボタンをクリックしたときに、Cookie とセッション情報を完全に消去するにはどうすればよいですか?