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

Ruby 使用Omniauth进行身份验证时,我应该在cookie中存储哪些数据?,ruby,oauth,sinatra,Ruby,Oauth,Sinatra,我正在使用Sinatra和Omniauth(特别是GoogleOAuth2)为一个网站提供服务。我对什么数据可以安全地存储在cookie中和什么数据不安全感到有些困惑 我倾向于说,一旦我确认AuthHash包含访问令牌,我就应该在cookie中存储一个authorized=>true字段。cookie使用Rack::session::cookie和:secret=>“一些很长很强的密码”进行保护。这种想法正确吗 此外,如果有人想入侵该网站(即在没有实际登录的情况下登录),他们需要做的就是成功破解

我正在使用Sinatra和Omniauth(特别是GoogleOAuth2)为一个网站提供服务。我对什么数据可以安全地存储在cookie中和什么数据不安全感到有些困惑

我倾向于说,一旦我确认AuthHash包含访问令牌,我就应该在cookie中存储一个
authorized=>true
字段。cookie使用
Rack::session::cookie
:secret=>“一些很长很强的密码”
进行保护。这种想法正确吗

此外,如果有人想入侵该网站(即在没有实际登录的情况下登录),他们需要做的就是成功破解cookie的秘密,并使用
authorized=>true
制作一个假cookie,对吗

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

我对什么数据可以安全地存储在cookie中和什么数据不安全感到有些困惑

通常,如果有人窃取用户cookie,这是最糟糕的情况:

  • 劫持用户的会话
  • 窃取cookie中包含的所有数据
  • 未经授权访问
我认为您想要使用的是一种形式的真实性令牌,您可以来回传递以验证用户及其请求的真实性

参考资料


我会查看这些部分,尤其是。

谢谢,如果cookie的秘密足够强大,“窃取cookie中包含的所有数据”这一说法是否正确?至于带标签的CSRF,最坏的情况似乎是您让经过身份验证的用户对该站点执行意外操作。如果这是一个无害的场景(即网站不做任何太敏感的事情),那么我就不会过分担心这一点。劫持用户会话也是如此。你可以加密cookie数据,这将使它更安全。