2015-10-19 27 views
0

加密数据

刚刚完成将attr_encrypted添加到某些模型后,我认为黑客的工作可能并不那么困难。Ruby on Rails - 为什么某些数据需要加密?

我有一个数据库在不同的服务器上的应用服务器 - 但是,如果有人设法到数据库服务器,该人也可以访问存储密钥的应用服务器(可能该假设是不正确的),因为它们具有相同类型的安全措施。

问题

Rails代码被存储在服务器上的一个可读的文本格式,因此,秘密密钥可被访问。当然,如果某人确实掌握了数据库,并且持有这些密钥,那么整个数据加密变得无关紧要,因为它只是(稍微)延长黑客时间来解密信息。

如果是这样,是否还有进一步的安全措施可以采取,或者我完全错过了加密的概念?

我查看了attr_encrypted gem以及相关的自述文件和问题,但找不到任何有用的东西。

回答

0

attr_encrypted保护您的数据免受简单的数据泄漏。想NSA嗅探一个DC间数据线(你的数据库复制日志将被发送到哪里)或心怀不满的DBA(无法访问应用程序源)将所有数据转储到互联网中。

如果实际违规,入侵者可能无法访问应用代码和数据库(取决于您的架构和安全措施)。如果他们都有,那么是的,这是游戏结束。

总的来说,最好是[敏感数据]比没有。不会伤害,我会说。

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文件来存储密钥,并与工头检索。

+0

嗨@swards,感谢您的帮助。 它鼓励我将其移出回购协议(尽管我必须交换所有的密钥,因为它们自开始以来都是版本化的)... 对不起,但如果服务器是擦去,你的本地安全副本消失(笔记本电脑失窃,数据损坏等)。如果不是在回购中,你会如何备份这些密钥,但某些开发人员仍可访问这些密钥? – cb24

相关问题