ruby - 敏感数据加密 - DataMapper + Sinatra

标签 ruby security encryption sinatra

我一直在阅读有关通过加密所有内容来保护用户数据的网络服务。万一数据库被盗,一切都是安全的(前提是我们假设所有常见的密码学内容)。

我正在使用 Sqlite 之上的 DataMapper ORM 来玩一个小型 Sinatra 应用程序(并不是真的打算启动它,它更多的是用于教育目的)。我实现了基本的用户身份验证(散列和加盐……简而言之,所有常见的东西),我对此很满意。

事实是,该应用程序的核心需要有关用户的个人信息:体重和其他 body 测量数据(毫无疑问,这些数据可能被视为个人和敏感数据,人们可能不想公开这些数据)。所以我想知道,我怎样才能安全地存储这些数据?在应用程序中,所有内容都只能由适当的用户访问(尽管我是这方面的初学者并且几乎所有内容都是手工编码的,但我很确定存在很多安全漏洞......但正如我所说我不是真的打算用它做任何事)。

我想过用用户密码加密,认证成功后解密,但是密码忘记了怎么办?如果密码被更改了怎么办?我读到(在 SO 上)出于这些原因,最好不要以这种方式进行。但是如何才能完成呢?

最佳答案

您可以执行 gem install attr_secure,然后对 ruby​​ 对象执行以下操作:

设置您的环境的 ATTR_SECURE_SECRET,因此在应用程序中执行 ENV["ATTR_SECURE_SECRET"] 是可行的。此外,为加密值设置/更改任何表列,以便它们可以保存长的加密值。

现在您可以执行此操作(来自 attr_secure 自述文件的示例):

class Report < ActiveRecord::Base
  attr_secure :secret_value
end

r = Report.new
r.secret_value = "ThisIsATest"
r.save
=> #<Report id: 116, secret_value: "EKq88AMFeRLqEx5knUcoJ4LOnrv52d7hfAFgEKMoDKzqNei4m7k...">

r = Report.find(116)
r.secret_value
=> "ThisIsATest"

您可以在以下位置阅读更多信息:https://github.com/neilmiddleton/attr_secure

关于ruby - 敏感数据加密 - DataMapper + Sinatra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321266/

相关文章:

ruby-on-rails - headless gem : webkit_server: cannot connect to X server

php - 我们应该在框架中重写遗留的 php 应用程序吗?

c++ - openssl 以编程方式签名和加密有何不同

.net - .NET框架中最安全的哈希算法是什么?

ruby - 如何为正则表达式获取多个组?

ruby - 干 ruby 正则表达式的方法?

url - 在 Codeigniter 中加密 uri 段

javascript - 我应该在 2019 年将我的 JWT 存储在哪里,localStorage 真的不安全吗?

linux - 同一服务器上的两个 OwnCloud 实例

html - 使用下拉菜单创建菜单