加密数据
刚刚在一些模型中添加了attr_encrypted,我开始认为黑客的工作可能没有那么难。
我在应用程序服务器的不同服务器上有一个数据库-然而,如果有人设法进入数据库服务器,那么该人也可以访问存储密钥的应用程序服务器(也许该假设是不正确的),因为它们具有相同类型的安全措施。
<标题>Rails代码以可读的文本格式存储在服务器上,因此可以访问密钥。当然,如果有人掌握了数据库,并且掌握了这些密钥,那么整个数据加密就变得无关紧要了,因为它只是(稍微)延长了黑客解密信息的时间。
如果是,是否有进一步的安全措施可以采取,或者我完全错过了加密的概念?
我已经看了一下attr_encrypted gem和相关的自述和问题,但找不到任何有用的
标题>attr_encrypted
保护您的数据免受简单的数据泄漏。想想NSA嗅探数据中心间的电缆(您的数据库复制日志将被发送)或心怀不满的DBA(无法访问应用程序源)将您的所有数据转储到互联网。
如果是实际的破坏,入侵者可能无法访问应用程序代码和数据库(取决于您的架构和安全措施)。如果他们两者都有,那么是的,游戏结束了。
总而言之,(对于敏感数据)有它总比没有好。我觉得这没什么。
不要将密钥放在应用服务器中,也不要将它们检入到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
文件来存储密钥并使用foreman检索。