You don't have javascript enabled. Good luck! :(
記事公開日: 2018/08/04
最終更新日: 2020/03/03

Cookie のセキュリティ

セッションを保存しているクッキー

Yesod では _SESSION というクッキーにセッションIDが格納されます。この名前は clientSessionBackend 関数内部でハードコーディングされている。

もし変更したい場合は Yesod 型クラスの makeSessionBackend を自分で実装する。その際は defaultClientSessionBackend が参考になる。

セッションに指定されているデフォルトの属性

loadClientSession の中に定義がある。

[AddCookie defaultSetCookie
  { setCookieName = sessionName
  , setCookieValue = encodeClientSession key iv date host sess'
  , setCookiePath = Just "/"
  , setCookieExpires = Just (csdcExpires date)
  , setCookieDomain = Nothing
  , setCookieHttpOnly = True
  }
]

この結果

  • Domain: 設定無し
  • HttpOnly: 設定有り

ということがわかる。

クッキーを追加した時のデフォルト値

setCookie を使うことでクッキーを追加できる。

SetCookie 型の値は defaultSetCookie を使って、必要な部分のみを変更すると良い。

defaultSetCookie :: SetCookie
defaultSetCookie = SetCookie
    { setCookieName     = "name"
    , setCookieValue    = "value"
    , setCookiePath     = Nothing
    , setCookieExpires  = Nothing
    , setCookieMaxAge   = Nothing
    , setCookieDomain   = Nothing
    , setCookieHttpOnly = False
    , setCookieSecure   = False
    , setCookieSameSite = Nothing
    }

その際、デフォルト値は上記のようになっている。