ASP.NET MVC の認証周りについて

ASP.NET のセッションは Session Fixation 問題を抱えるため、認証には認証用に用意されている Form 認証を使用する。

MVC で認証ありサイトを作る時は、RegisterGlobalFilters() で AuthorizeAttribute を Filter に追加して、基本的にサイト全体で認証必要な状態にした方がたぶん安全。 認証不要なページ(コントローラー)は、明示的に AllowAnonymous 属性を付加して対応する。

(Form 認証ではなく)セッションが有効な状態かは、コントローラーの OnAuthorization() でチェックする。ベースコントローラーレベルでチェックするのを推奨。 なお、このイベントでリダイレクトする時は、Response.Redirect() ではなく、filterContext.Result にセットすることで行う必要がある。