2012-05-12 7 views
2

私はバニラフォーム認証を使用しています。同じユーザーとして複数のセッションを開いていて、1つのセッションでパスワードを変更しても、もう1つのセッションは引き続き認証されます。パスワードを変更した後でもFormsAuthenticationがセッション間で動作します

私は、2回目のセッションで再度資格情報を求められると思います。

ハッシュされたパスワードをCookieに書き込んで、この機能を取得するたびに確認する必要がありますか?

私にはセキュリティホールのようです。

+1

これを強制する必要があります。一度認証されると、サインアウト、タイムアウト、クッキーの削除などを行うまで認証されます。 – peroija

+1

永続的なCookieでログインしたラップトップや何かが盗まれた場合はどうなりますか?パスワードを変更すると、他のすべてのセッションを効果的に認証解除すると思います。 – mattdwen

答えて

2

これは予想される動作です。 FormsAuthenticationは、サーバーが実際にそのCookieを生成したことを検証するために、ユーザー情報のみを格納します(他のいくつかのデータとともに)。クッキー自体が有効なクレデンシャル(またはチケットまたはクレーム)です。これを心配している場合は、フォームのCookieが有効かどうか、または電話の可能性がある時間を減らしてパスワードの変更が発生した場合はサーバーに問い合わせる必要があります。FormsAuthentication.SignOut()ログイン。

FormsAuthenticationが何をしたいのかということではないかもしれません。

これが役に立ちます。

0

私のコメントに記載されているように、あなたが望む動作であれば、この行動を強制する必要があります。これは、自分の "SecureBasePage"からすべての安全なページを派生させるのと同じくらい簡単なことです。その安全なページであなたのデータベースをポーリングして、ユーザが承認されてからパスワードが変更されているかどうかを調べることができます。