2012-10-30 8 views
5

私たちはサイトに対してセキュリティテストを実施しており、脆弱性が特定されています。サーバー上でセッション識別子を終了する

問題

セッション識別子は、ユーザのワークステーション へのアクセスを持っていた攻撃者によって知られていた場合は、ユーザーが自分のセッションを終了した後、ログアウトセッションは セッションクッキーを使用してアクセスすることができ。

勧告

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

コード

コード現在ありません。この私は「チェックそのセッション識別子であることを確認するかどうかはわかりません

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

(ユーザーが「ログアウトボタン」をクリックした場合)ログアウト機能が呼び出されたときにサーバー側で正しく終了しました。

私はいくつかの研究を行い、代わりにこれを行うべきだと思いますか?

 Session.Abandon(); 

もしそうでなければ、私は何をしていますか? (私はこれをテストする方法が完全にはわかりません...)

答えて

6

このタスクでは、ASP.net Session.Abandon()では不十分です。セッションIDクッキーはユーザーのブラウザから削除されないため、同じアプリケーションは、セッションが放棄された後、同じセッションIDと新しいセッション状態インスタンスを使用します。 As Microsoft states here。あなたは、セッション明確なセッションIDクッキーを放棄する必要があります。

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

また、フォーム認証Cookieの名前を変更することをお勧めします、あなたのweb.configファイルに:ここ

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

は良い記事ですSession Attacks and ASP.NETとそれを解決する方法。

関連する問題