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

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

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

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

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

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

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

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

更新:我不确定我是否通过猜测ID从数据库访问令牌是否正确理解你的意思。

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

如果您正在开发一个Web应用程序,您可以在用户提交的表单中添加一个hidden字段,并使用user.id计算一些类似哈希的值,这样邪恶的人就无法更改该值并只是“猜测”一个访问令牌