ruby-on-rails - 将用户生成的文本安全地存储在数据库中 (Ruby/Rails)

标签 ruby-on-rails ruby security encryption

我正在尝试找到一种方法将用户生成的文本安全地存储在数据库中(这样只有用户才能访问他/她存储的文本)。我可以让 Rails 使用用户密码作为 key 来加密和解密用户的文本条目,但是如果用户忘记了他们的密码,就没有办法解密他们以前的内容/文本(因为 Rails 应用程序使用 BCrypt 来仅存储密码的哈希值)。

有人知道怎么做吗?看起来 Dropbox 做了类似的事情:“存储在 Dropbox 服务器上的所有文件都经过加密 (AES-256),没有您的帐户密码就无法访问。” (http://www.dropbox.com/help/27) 然而,它们允许您重置密码,我假设它们不会在任何地方存储您的纯文本密码。

我错过了什么?任何建议将不胜感激。谢谢!

最佳答案

逻辑上只有两个选择:

  1. 您使用服务器已知的 key (用户的 key 散列或其他标识符)进行加密。入侵者可能会读取所有加密数据,但用户永远不会丢失加密 token ,因为它在您的服务器上。
  2. 您使用只有用户知道的 key (例如他的密码)来加密数据。然后入侵者将无法读取加密数据,但如果用户丢失了他的 key ,数据就和一堆随机位一样好。

很明显,Dropbox 选择了 (1),因为他们允许重置您的密码。

关于ruby-on-rails - 将用户生成的文本安全地存储在数据库中 (Ruby/Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404940/

相关文章:

ruby-on-rails - 无法自动加载 Rails 4 猴子补丁

ruby-on-rails - 通过 Rails 使用 FFMPEG 添加水印

ruby-on-rails - Bundler 不允许我安装 gems

ruby - 如何覆盖?在这种情况下使用字符?

javascript - 为什么 Chrome 会显示这些 (rails-jquery) 警报两次,而 Firefox 却不会?

ruby-on-rails - Ruport - `each' :String 的未定义方法 ""

ruby-on-rails - Rails 4 中的 ForbiddenAttributesError

security - 远程服务器上的缓冲区溢出

android - 如何保护 Android 应用程序免受盗窃和应用程序本身的修改?

java - 如何保护 Java 程序免受黑客攻击