【发布时间】:2011-09-21 04:48:57
【问题描述】:
我试图弄清楚使用基于 sessionid 的身份验证与基于 cookie 的身份验证的优缺点
据我所知,基于 cookie 的身份验证
- 用户提交登录请求并发送其凭据
- 根据数据库检查凭据
- Cookie 将与用户详细信息一起设置
- 这将通过 https 完成,并且 cookie 将被加密。
- 在 .net 中,如果这是 authcookie 用户身份将被设置
- db 只被命中一次,随后的调用只检查 auth cookie
如果是基于会话的身份验证
- 用户提交登录请求并发送其凭据
- 根据数据库检查凭据
- 会生成一个会话 ID,并将其存储在一个数据库中
- Cookie 将使用用户详细信息和生成的会话 ID 进行设置
- 后续调用会将会话 ID 与数据库中的 ID 进行比较
- db 每次都被命中
问题
有什么理由更喜欢其中一个吗?基于 cookie 的安全性是否较低(即使您对其进行加密和签名)?由于会话在每次调用期间都会访问数据库,因此基于会话的性能是否更差?我已经看到几个网站倾向于一种或另一种方式,但无法清楚地了解使用哪种方法。任何讨论/建议将不胜感激。
【问题讨论】:
标签: session authentication language-agnostic forms-authentication