关于如何在数据库中存储密码,有很多问题,我知道密码在任何情况下都不应以纯文本形式存储。但是,我的应用程序需要针对各种第三方进行身份验证,例如不提供OAUTH的SMB或REST API。简而言之:我需要存储密码。
为了避免以明文形式存储密码,我的想法是将密钥存储在环境变量中,并使用它来加密/解密密码。
这是解决问题的好办法还是有更好的选择?
答案 0 :(得分:2)
查看attr_encrypted gem以透明地加密和解密属性。这将允许您写入虚拟属性,并在保存时将无缝地处理加密数据并将其持久保存到数据库中,以便它们永远不会以纯文本形式存储。
确保使用具有新默认模式的gem:per_attribute_iv,它将为您要存储的每个加密属性保留加密的密文和单独的IV。