[ad_1]
ログアウト時にブラウザーから Cookie を削除しようとしていますが、古いセッション ID .AspNet.ApplicationCookie でテストすると. それはまだ残っています。
ログアウトに追加したコードは
if (System.Web.HttpContext.Current != null) { HttpCookie aCookie; string cookieName; int limit = Request.Cookies.Count; for (int i = 0; i < limit; i++) { cookieName = Request.Cookies[i].Name; aCookie = new HttpCookie(cookieName); aCookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(aCookie); } } System.Web.HttpContext.Current.Session.Abandon(); Response.Cookies.Clear(); System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
私が試したこと:
名前をnullに設定しようとしました
<pre>cookieName = Request.Cookies[i].Name = null;
値をnullに設定する
<pre>aCookie.Value = null;
解決策 1
設定で新しい Cookie を指定してから、Response.Cookies.Clear() を呼び出すと、すべての修正が取り消されます。
ASP.net はセッション ID を再利用します。コードのどこかでセッション ID を使用しているために問題が発生する場合、解決策はセッション ID を使用しないようにコードを変更し、別のものを使用することです。
解決策 2
呼んでも構わない
Response.Cookies.Clear()
最初か最後に。 効果はありません。
if (System.Web.HttpContext.Current != null) { System.Web.HttpContext.Current.Session.Clear(); System.Web.HttpContext.Current.Session.Abandon(); System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); HttpCookie aCookie; string cookieName; int limit = Request.Cookies.Count; for (int i = 0; i < limit; i++) { cookieName = Request.Cookies[i].Name; aCookie = new HttpCookie(cookieName); aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie); } }
そして、セッションIDによって、あなたが話していると思います
ASP.NET_SessionId
I am trying to delete the <pre>.AspNet.ApplicationCookie
解決策 3
私もすでにそれを除外しようとしました。 同じことが起こります。 の
AspNet.ApplicationCookie
セッションは、有効期限を 1 日前に設定し、Clear をまったく呼び出さなかった後も有効です。
解決策 4
これはうまくいきません。 このコードは完全にサーバー側で実行されます。 したがって、ユーザーが実際に「ログアウト」ボタンをクリックすると、Cookie が上書きされる可能性があります。
はるかに大きな問題は、ユーザーが「ログアウト」をクリックすることがめったにないことです。 ブラウザを閉じるだけです。 コードが呼び出されることはなく、Cookie がクリアされたり置き換えられたりすることはありません。
では、明日ユーザーが再度ログインするとどうなるでしょうか? 別のセッション ID を持つまったく新しいセッションが作成されますが、Cookie セッション ID は一致しません。 今、あなたは大きな問題を抱えています。
セッション ID をクライアント側の Cookie に保存しないでください。
解決策 5
Cookie はセッションでのみ使用できます。 ブラウザーを閉じるとセッションが閉じられるため、Cookie が期限切れになります。 明日ログインすると、再度ログインする必要があります
では、セキュリティの観点からの解決策は何ですか? ログアウトするかブラウザーを閉じると、攻撃者がセッションをハイジャックするのではなく、再度ログインする必要があります。
[ad_2]
コメント