asp.net アプリケーションには、セッション ハイジャックとセッション固定の問題があります。SSLも実装しています。
1.. web.config ファイルに以下のコードを追加しました。
<----
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<forms loginUrl="Homepage.aspx"
protection="All"
timeout="20"
name=".ASPXAUTH"
path="/"
requireSSL="true"
slidingExpiration="true"
/>
--->
2... フォームの認証チケットを暗号化し、ユーザーが認証された後に Cookie に追加します。
<---
FormsAuthenticationTicket tkt;
文字列 Cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, uname, DateTime.Now, DateTime.Now.AddMinutes(20),false, "カスタム データ");
cookiesstr = FormsAuthentication.Encrypt(tkt);
ck = 新しい HttpCookie(FormsAuthentication.FormsCookieName, cookiesstr); ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
-->
3.. セッション変数を削除し、ログアウト ページとエラー ページで ASP.NET_SessionID に null 値を渡します。
SessionHandler.EndSession();
Session.RemoveAll();
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
if (Request.Cookies["AuthToken"] != null)
{
Response.Cookies["AuthToken"].Value = string.Empty;
Response.Cookies["AuthToken"].Expires = DateTime.Now.AddMonths(-20);
}
HttpCookie authcookie = Request.Cookies[FormsAuthentication.FormsCookieName];
authcookie.Expires = DateTime.Now.AddDays(-1D);
Response.Cookies.Add(authcookie);
FormsAuthentication.SignOut();
まだ問題は解決していません...