从OAuth安全存储令牌/秘密/等的正确方法?

Lan*_*ard 14 ruby database security oauth

我刚开始研究OAuth,它看起来非常好.我现在正在和ruby 一起工作.

现在我想知道,在本地数据库和会话中存储响应的建议安全方法是什么?

  • 我应该存储什么?
  • 我应该在哪里存放?

此示例twitter-oauth-with-rails应用程序user.id在会话中存储a ,而用户表具有tokensecret.但这似乎很容易通过传递一大堆测试用户id来破解和获取秘密,不是吗?

Tom*_*kas 6

没有Twitter应用程序的消费者密钥/秘密,令牌是无用的,因为它们对于每个应用程序都不相同,但取决于消费者密钥/秘密.

要获得会话变量,您必须猜测会话ID,这不容易实现.

如果您希望可以在会话中存储这些令牌,但我建议将用户令牌存储在数据库中,并包含所有其他用户数据,以便您的会话仅包含用于识别系统中用户的数据.

更新:我不确定我是否正确理解您通过猜测ID从数据库访问令牌的含义.

您是否有任何身份验证,以便用户必须输入一些凭据才能访问其数据?您应该以存储用户电子邮件地址或密码的方式存储令牌,并且只有经过身份验证的用户才能访问它.


Pab*_*dez 1

如果您正在开发一个 Web 应用程序,您可以hidden在用户提交的表单中添加一个字段,其中包含一些由user.id邪恶的人计算出的类似哈希值,因此邪恶的人无法更改该值,而只能“猜测”访问令牌