【问题标题】:Should I populate a session variable from a cookie?我应该从 cookie 中填充会话变量吗?
【发布时间】:2015-02-01 03:09:20
【问题描述】:
我有一个带有登录功能的网站,以及“记住我”选项。在我的用户表中,我有一个 128 位的随机令牌,我将其放入 cookie 中,然后用于查找用户。
我将使用“LoggedInUser”,它是我的“用户”类的一个实例,它将填充数据库查找,因此我可以检索用户的用户名、ID 和其他信息。现在假设用户有一个 cookie,我应该简单地使用 cookie 值执行用户查找,还是应该将令牌存储在会话中并使用它执行查找?这里主要担心的是安全和性能,IE哪个更安全,哪个加载时间更短?
【问题讨论】:
标签:
c#
asp.net-mvc
session
cookies
【解决方案1】:
Session Id 通常存储在 cookie 中 - 因此无论您是自己将 ID 存储在 cookie 中还是使用 SessionState cookie,几乎没有安全差异。
性能相同 - 主要成本将在数据库查找中进行,显然如果您执行几个额外步骤(从会话状态添加/红色),它会(可能无法测量)更快。
注意事项:
- 会话状态生成的“随机”经过大量安全审查,希望您的也一样好。
- 默认情况下,会话状态 cookie 未标记为“安全”,因此也会通过 HTTP 发送,显然您的不会 - 所以自定义 cookie 会更好一些。
- 会话状态可以配置为无cookie,在您的情况下,您的方案有点安全(因为您不会错误地共享cookie,但网址很容易共享)。