4

我有一个在 Ruby 2.0 上运行的 Ruby on Rails 应用程序(v4.0.1 虽然我认为这与这里无关),并且我允许用户对第三方服务进行 OAuth 以让我访问他们的数据。

我已将我的应用程序的使用者密钥和使用者秘密存储在源代码控制之外的环境变量中。

在 OAuth / OAuth2 舞蹈中的最后一次回调之后,我的每个用户都有令牌,可用于访问他们的信息。

对于他们的登录凭据,我使用一种散列方式将他们的密码以纯文本形式存储在我的数据库中,所以我想我应该对他们的令牌做类似的事情,但由于我需要使用这些令牌来访问他们的数据,我需要能够重现纯文本,所以我试图找出进行对称加密的最佳方法。

我打算将我的加密密钥存储为环境变量,然后使用https://gist.github.com/nono/2995118之类的东西来加密令牌。这安全吗?

人们是否使用过这个https://github.com/reidmorrison/symmetric-encryption gem?

我试图阻止自己重新发明轮子。有小费吗?

4

2 回答 2

1

django-allauth 不是 OAuth(2) 实现的懒惰者。我现在正在查看它的 socialaccount_socialtoken 表,并且令牌都是明文形式。我认为你被覆盖了,因为如果他们偷了代币,没有人可以使用它们。

于 2013-11-08T00:07:45.613 回答
1

我最终使用了attr_encryptedgem - https://github.com/attr-encrypted/attr_encrypted

我将密码添加到我的.env文件中,使其不受版本控制。

以下是你如何使用它:

attr_encrypted :email, :key => 'a secret key'
于 2013-12-05T07:41:23.127 回答