使用Zend时存储在数据库中加密的电子邮件的最佳实践

时间:2012-07-18 06:18:19

标签: php mysql zend-framework encryption

我正在使用带有LAMP堆栈的Zend Framework。客户要求保护敏感数据,包括电子邮件。在这个项目中,电子邮件将以两种方式使用:发送自动消息和发送简报。

有人有过这个吗?哪些算法快速,可靠并且可以与可变加密密钥一起使用?我应该在哪里存储加密密钥?数据库表应该使用什么引擎?

2 个答案:

答案 0 :(得分:4)

好的,这些是我的2岁。

对于需要动态加密和解密的数据,我建议使用对称密钥算法,首先想到的是Blowfish。它既快又相对安全。

关于变量键。通常,为每个需要加密和解密的条目设置不同的密钥几乎没有任何价值。因此,我建议使用单个密钥,在某个地方的配置文件中设置。

如果您确实需要为每个用户/记录设置密钥,我建议不要将它们保留在数据库中。将它们保存到磁盘上的平面文件中。

对于表引擎,只要它不是基于内存的,你选择哪一个都无关紧要。


至于功绩 - 如果客户明确要求,我认为有其他优点。即使在技术上没有理由创建这种加密,这将有助于客户的安全感。当然,它可能是一个错误的,但它确实有助于保持数据更安全,并让客户端更安全地睡眠。因此,如果客户端要求,请选择它!

答案 1 :(得分:1)

如果你真的必须这样做,Janis Peisenieks给出的答案是一个很好的起点。

据我所知,没有安全的方法在PHP中存储密钥 - 这意味着对系统进行适度控制的攻击者可以从配置文件中检索密钥,并使用它来解密数据

想要了解用户电子邮件地址的攻击者可以通过多种方式检索这些数据 - 正如GordonM所写,如果您的系统向这些用户发送电子邮件,该电子邮件相对容易拦截,而且被加密,到“地址”不是。

只是检查您是否会对密码进行哈希(不加密)(如果您的系统使用这些密码?)