首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Rails加密的Hstore

用Rails加密的Hstore
EN

Stack Overflow用户
提问于 2013-09-10 13:35:34
回答 1查看 317关注 0票数 0

我有一个带有hstore的Postgresql数据库,它工作得很好,只不过我们现在需要将敏感信息放到hstore中,因此需要对这些信息进行加密。

是否有一种使用rails加密Hstore的简单方法(/ /最佳实践)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 16:03:25

您可以在存储在db中之前使用before_save钩子加密哈希中的敏感属性,在实例化记录时使用after_initialize钩子解密。

下面这样的东西应该能起作用:

代码语言:javascript
复制
class MyModel < ActiveRecord::Base
  after_initialize :decrypt_sensitive
  before_save :encrypt_sensitive

protected:
  def encrypt_sensitive
    props['some_attr'] = encrypt_and_mac(props['some_attr'])
    props['another_attr'] = encrypt_and_mac(props['another_attr'])
  end

  def decrypt_sensitive
    props['some_attr'] = decrypt_and_verify(props['some_attr'])
    props['another_attr'] = decrypt_and_verify(props['another_attr'])
  end
end

after_initialize将考虑一些性能问题,因此您可能希望考虑使用自定义访问器来惰性地执行解密。

虽然我完全支持分层安全性,但是如果没有对平台和密钥管理的额外控制,您将不会购买大量的安全性。我特别避免了密码和加密模式、密钥长度、密钥管理等细节。您需要根据自己和/或客户的风险评估得到通知(信息安全风险管理,请参阅ISO 27000系列)。从技术上讲,您可能希望考虑使用带有消息身份验证(如CCM或OCB3 )的AES,以便您可以检测rest中的数据是否已被篡改,但您仍然需要注意如何使用这些模式。

通常情况下,加密是一种误用的工具,只会在本质上不安全的操作环境中提供虚假的安全感。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18720441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档