在PHP中使用AES加密时,应该在哪里存储密钥?

时间:2010-02-05 19:58:30

标签: php cakephp mcrypt aes

我正在我的网络应用程序中实现AES-256位加密:

http://www.utoxin.name/2009/07/automatic-db-field-encryption-in-cakephp/

其中一个步骤是存储使用的密码并键入boostrap文件。但是什么阻止某人用PS或其他东西扫描文件系统并解密数据呢?

保护数据的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

如果有人可以访问您服务器硬盘上的所有文件,则所有投注均已关闭。那时你无法保护你的数据,因为你的webapp仍然必须能够访问它。

此加密只会保护您免受可以访问数据库但不访问文件系统的攻击者的攻击,例如:通过SQL注入。即使在这种情况下,他们也可以读取数据:根据特定的泄漏情况,webapp可能会为他们高兴地解密它!

答案 1 :(得分:1)

(我意识到这是一个古老的问题,但作为链接博客文章的作者,我想添加一些评论)

接受的答案说的都是正确的。一旦您的文件系统遭到入侵,就没有任何保护。此外,是的,如果写得不好,可以以未加密的形式公开数据。该工具旨在简单地提供一种方法,使其更容易处理数据库中的数据加密。如果您不喜欢自动解密功能,那么删除行为上的afterFind()回调以便不再触发它以及可以提高安全性的任何其他调整(以牺牲安全性为代价)将是微不足道的。方便)。

我希望这可以帮助其他任何偶然发现这篇文章的人。有人,因为我从这个问题中得到了几个点击我的博客。 :)

答案 2 :(得分:-1)

在unix框中,您可以将其存储到由apache的用户帐户创建的文件中,其中包含0600 permisions。这可以由root访问,所以如果它是安全的盒子没有问题。在Windows框中,我不知道。