我有一个带有hstore的Postgresql数据库,它工作得很好,只不过我们现在需要将敏感信息放到hstore中,因此需要对这些信息进行加密。
是否有一种使用rails加密Hstore的简单方法(/ /最佳实践)?
发布于 2013-09-10 16:03:25
您可以在存储在db中之前使用before_save钩子加密哈希中的敏感属性,在实例化记录时使用after_initialize钩子解密。
下面这样的东西应该能起作用:
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
endafter_initialize将考虑一些性能问题,因此您可能希望考虑使用自定义访问器来惰性地执行解密。
虽然我完全支持分层安全性,但是如果没有对平台和密钥管理的额外控制,您将不会购买大量的安全性。我特别避免了密码和加密模式、密钥长度、密钥管理等细节。您需要根据自己和/或客户的风险评估得到通知(信息安全风险管理,请参阅ISO 27000系列)。从技术上讲,您可能希望考虑使用带有消息身份验证(如CCM或OCB3 )的AES,以便您可以检测rest中的数据是否已被篡改,但您仍然需要注意如何使用这些模式。
通常情况下,加密是一种误用的工具,只会在本质上不安全的操作环境中提供虚假的安全感。
https://stackoverflow.com/questions/18720441
复制相似问题