【解決方法】ブラウザから Cookie を削除する

プログラミングQA

[ad_1]

ログアウト時にブラウザーから Cookie を削除しようとしていますが、古いセッション ID .AspNet.ApplicationCookie でテストすると. それはまだ残っています。
ログアウトに追加したコードは

C#
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に設定しようとしました

C#
<pre>cookieName = Request.Cookies[i].Name = null;

値をnullに設定する

C#
<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]

コメント

タイトルとURLをコピーしました