5

当サイトに対するセキュリティテストを実施し、脆弱性を特定しました。

問題

ユーザーのワークステーションにアクセスできる攻撃者がセッション識別子を知っていた場合、ユーザーがセッションを終了した後、セッションCookieを使用してログアウトしたセッションにアクセスできます。

おすすめ

ログアウト機能が呼び出されたときに、サーバー側でセッションIDが正しく終了していることを確認してください。

コード

コードは現在これを行っています(ユーザーが「ログアウトボタン」をクリックした場合)

        FormsAuthentication.SignOut();
        Roles.DeleteCookie();
        Session.Clear();

「ログアウト機能が呼び出されたときに、サーバー側でセッション識別子が正しく終了していることを確認する」方法がわかりません。

私はいくつかの調査を行いましたが、代わりにこれを行うべきだと思いますか?

        Session.Abandon();

そうでない場合、私は何をすべきですか?(これをテストする方法が完全にはわかりません...)

4

1 に答える 1

6

ASP.netSession.Abandon()では、このタスクには不十分であり、ユーザーのブラウザーからセッションID cookieを削除しないため、セッションが放棄された後、同じアプリケーションへの新しい要求は、同じセッションIDと新しいセッション状態を使用します。実例!Microsoftがここで述べているようにセッションを放棄し、セッションIDCookieをクリアする必要があります。

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

ファイル内のフォーム認証Cookie名を変更することもお勧めしweb.configます。

<authentication mode="Forms">
  <forms name=".CookieName" loginUrl="LoginPage.aspx" />
</authentication>

これは、セッション攻撃とASP.NETに関する優れた記事とその解決方法です。

于 2012-11-03T08:41:57.780 に答える