我需要在 Postgres 中以加密形式存储某些数据。显然,我需要对其进行加密、存储,并且能够读取和解密。做这个的最好方式是什么?
The best方法是在客户端或应用服务器上进行加密,因此数据库不知道密钥是什么,也无法解密数据。如果客户端/应用程序服务器位于不同的主机上,那就更好了。
如果您的数据库正在为您加密和解密数据,那么密钥很容易与数据库一起被盗。
如果您使用 pgcrypto 的数据库内加密函数,您可以让应用程序将密钥与数据一起发送,这至少有些帮助。不过,如果有帮助的系统管理员打开积极的语句日志记录或自动计划转储,那么密钥仍然会在日志中暴露,最终,如果密钥发送到数据库计算机,那么它们比不发送到数据库计算机时更容易受到攻击。 。控制数据库计算机的攻击者还可以更改日志设置、替换 postgresql 二进制文件或嗅探流量以通过这种方式捕获密钥和数据。
如果应用程序服务器和数据库位于同一台计算机上并由相同的角色管理,则无需担心隔离它们,并且仅使用 pgcrypto 可能是明智的。
不管怎样,记得加盐!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)