如何加密 Rails 数据库中的 OAuth 秘密/令牌?

Cyr*_*rus 5 ruby encryption ruby-on-rails oauth oauth-2.0

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

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

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

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

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

有人使用过这个https://github.com/reidmorrison/symmetry-encryption gem 吗?

我正在努力阻止自己重新发明轮子。有小费吗?

Cyr*_*rus 2

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

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

使用方法如下:

attr_encrypted :email, :key => 'a secret key'
Run Code Online (Sandbox Code Playgroud)