【ASP.NET】クッキー(Cookie)

クッキー/Cookie

 * クライアント側に保存可能な小さなテキストであるCookieを制御可能。

Cookieの発行

サンプル

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    ' 方法1
    Dim cookie As New HttpCookie("userName")
    cookie.Value = "user1"               ' Cookie の値
    cookie.Expires = DateTime.Now.AddDays(1) ' Cookie 有効期間(1day)
    Me.Response.Cookies.Add(cookie) ' 追加

    ' 方法2
    Me.Response.Cookies("Status").Value = "LogOff"
    Me.Response.Cookies("Status").Expires = DateTime.Now.AddHours(2)
    Me.Label1.Text = Me.Response.Cookies("Status").Value

End Sub

参考文献

http://atamoco.boy.jp/asp/20110423_1.php

セキュアクッキーの設定

http://blogs.yahoo.co.jp/dk521123/28437833.html
でも記載したが、セキュアクッキーにする必要がある。そこで、ASP.netでの設定方法を記載する。

[1] Global.asax の Application_EndRequest を利用

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
    ' アプリケーションの終了時に呼び出されます。

    If Me.Response.Cookies.Count > 0 Then
        For Each key In Me.Response.Cookies.AllKeys
            If key.ToLower().Equals("asp.net_sessionid") Then
                Me.Response.Cookies(key).Secure = True
            End If
        Next
    End If

End Sub

補足:"ASP.NET_SessionId"について

 * cookieNameの既定値は "ASP.NET_SessionId"であるため。以下参照。
http://msdn.microsoft.com/ja-jp/library/h6bb9cz9%28v=vs.80%29.aspx

参考文献

http://aspnet.keicode.com/basic/ssl-secure-cookie.php

[2] Web.config を利用

サンプル:Web.config

http://msdn.microsoft.com/ja-jp/library/ms228262.aspx
* httpCookies 要素の「requireSSL="true"」にする(一番いいと思う)
<configuration>
    <system.web>
      <httpCookies requireSSL="true" />
    </system.web>
</configuration>

サンプル:Web.config

http://msdn.microsoft.com/ja-jp/library/91ka2e6a.aspx
* 「cookieRequireSSL="true"」にする
<configuration>
    <system.web>
      <anonymousIdentification 
        enabled="true"
        cookieless="UseCookies"
        cookieName=".ASPXANONYMOUS"
        cookieTimeout="30"
        cookiePath="/"
        cookieRequireSSL="true"
        cookieSlidingExpiration = "true"
        cookieProtection="Clear"
      />
    </system.web>
</configuration>

サンプル:Web.config

http://msdn.microsoft.com/ja-jp/library/1d3t3c61.aspx
http://msdn.microsoft.com/ja-jp/library/ff648341.aspx
* 「requireSSL="true"」にする
<configuration>
   <system.web>
   <authentication mode="Forms">
      <forms 
      name="401kApp" 
      loginUrl="/login.aspx"
      requireSSL="true"
      cookieless="AutoDetect"
      defaultUrl="myCustomLogin.aspx">
      <credentials passwordFormat = "SHA1">   
         <user name="UserName" 
         password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
      </credentials>   
      </forms>
   </authentication>
   </system.web>
</configuration>



関連記事

クッキー(Cookie

http://blogs.yahoo.co.jp/dk521123/28439642.html

ViewState

http://blogs.yahoo.co.jp/dk521123/27605311.html

セッション(Session)

http://blogs.yahoo.co.jp/dk521123/28490495.html

アプリケーション状態管理(Applicationオブジェクト)

http://blogs.yahoo.co.jp/dk521123/27476083.html

値の受け渡し

http://blogs.yahoo.co.jp/dk521123/28449946.html