刚刚将attr_encrypted添加到某些模型后,我开始认为黑客的工作可能不那么难。
我在应用服务器的不同服务器上有一个数据库 - 但是,如果有人设法进入数据库服务器,该人也可以访问存储密钥的应用服务器(可能是假设是不正确的)因为它们具有相同类型的安全措施。
Rails代码以可读文本格式存储在服务器上,因此可以访问密钥。当然,如果有人确实掌握了数据库,并保留了这些密钥,那么整个数据加密就变得无关紧要了,因为它只是(略微)延长了黑客解密信息的时间。
如果是这样,是否有进一步的安全措施,或者我完全错过了加密的概念?
我已经浏览了attr_encrypted gem以及相关的自述文件和问题,但找不到任何有用的东西。
答案 0 :(得分:0)
attr_encrypted
保护您的数据免受简单的数据泄露。想想NSA嗅探DC间电缆(您的数据库复制日志将被发送)或心怀不满的DBA(无法访问应用程序源)将所有数据转储到互联网中。
如果是实际违规行为,入侵者可能无法访问应用程序代码和数据库(取决于您的体系结构和安全措施)。如果他们两个都有,那么是的,这是游戏结束。
总而言之,拥有[敏感数据]比拥有它更好。我会说,没有伤害。
答案 1 :(得分:0)
不要将密钥放在应用服务器中,也不要将它们签入git存储库。
相反,使用环境变量。您可以使用不同的开发和生产方法。
在Heroku上很容易(例如)。
我有加密问题:
# app/models/concerns/encryption.rb
module Encryption
extend ActiveSupport::Concern
module ClassMethods
def encryption_key
ENV['ENCRYPT_KEY']
end
end
end
在模型中,我这样做
class User < ActiveRecord::Base
include Encryption
attr_encrypted :name, :key => encryption_key
end
在开发过程中,我使用.env
文件存储密钥并与领班一起检索。