在使用Omniauth进行身份验证时,我应该在cookie中存储哪些数据?

时间:2012-06-18 22:17:08

标签: ruby oauth sinatra

我正在使用Sinatra和Omniauth(特别是谷歌oauth2)来提供网站服务。我对于哪些数据可以安全存储在cookie中以及什么不存在而感到困惑。

我倾向于说,一旦我确认AuthHash包含访问令牌,我就应该在cookie中存储authorized => true字段。 Cookie使用Rack::Sesssion::Cookie:secret => "some-really-long-and-strong-password"进行保护。这种想法是否正确?

此外,如果有人想要破解网站(即登录而不实际登录),他们所需要做的就是成功破解cookie的秘密并使用authorized => true制作假cookie,对吗?

我认为存储Omniauth::AuthHash的凭据部分中存储的实际访问密钥没有任何价值,因为这似乎是敏感信息......

1 个答案:

答案 0 :(得分:2)

  

我对哪些数据可以安全存储在cookie中以及哪些数据不存在感到困惑。

一般情况下,如果有人窃取用户cookie,这是最糟糕的情况:

  • 劫持用户的会话
  • 窃取Cookie中包含的所有数据
  • 获取未经授权的访问

我认为您想要使用的是一种真实性令牌,您可以来回传递以验证用户及其请求的真实性。

<强>参考

我会特别查看Example and characteristicsPrevention部分。