pet*_*hka 13 database encryption activerecord ruby-on-rails mongodb
我想加密数据库,因为存储了机密数据.我用mongodb和mongoid.这种数据库有可能吗?如果不是,你可以推荐哪些替代方案?
PS主要目的是:如果有人破解服务器并窃取数据库,那将是无法加密的.
更新:感谢nickh,我发现ActiveRecord有很多灵魂,但Mongoid和其他Mongo clinets没有.为Mongo和Mongoid找到一些灵魂会很棒!
Bre*_*edt 11
我已经使用attr_encrypted与Mongo和Mongoid一起工作了.它只需要几个调整.
确保在模型中显式创建由attr_encrypted自动创建的所有encrypted_字段.例如,如果你有:
attr_encrypted :email, :key => 'blah blah blah', :encode => true
Run Code Online (Sandbox Code Playgroud)
你需要:
field :email, :type => String
field :encrypted_email, :type => String
Run Code Online (Sandbox Code Playgroud)
另请注意,您需要告诉它对加密字符串进行编码,否则Mongo会大声抱怨.
最后,如果您正在加密哈希,请执行以下操作:
field :raw_auth_hash, :type => Hash
field :encrypted_raw_auth_hash, :type => String
attr_encrypted :raw_auth_hash, :key => 'blah', :marshal => true, :encode => true
Run Code Online (Sandbox Code Playgroud)
我在attr_encrypted gem上取得了很大的成功.但是,我只在ActiveRecord中使用它.我不知道它是否适用于MongoMapper或Mongoid.
无论你如何实现这一点,我强烈建议只加密某些字段.不要加密每个表中的每个字段.这样做会很难使用关联,使用LIKE搜索等.
尝试mongoid-encrypted-fields gem - 它是无缝的,因为它使用mongoize/demongoize方法处理加密.
只需定义您的字段:
field :ssn, type: Mongoid::EncryptedString
Run Code Online (Sandbox Code Playgroud)
然后您可以像平常一样访问它,但数据是加密存储的.
归档时间: |
|
查看次数: |
13049 次 |
最近记录: |