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

问题描述:

我在我的web应用程序实现AES-256位encrpytion:在PHP中使用AES加密时,应该在哪里存储密码密钥?

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

步骤之一说来存储一个自举文件中使用的加密算法和密钥。但是什么阻止了某人用PS或其他东西扫描文件系统并解密数据呢?

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

如果有人可以访问服务器硬盘驱动器上的所有文件,则所有投注都将关闭。因此,您无法保护您的数据,因为您的web应用程序仍然必须能够访问它。

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

在UNIX系统中,你可以将它保存到一个文件中,用户帐户为Apache创建,与0600 permisions。这可以通过根访问,所以如果这个盒子是安全的,那就没有问题了。在windows的盒子里,我不知道。

(我知道这是一个古老的问题,但作为链接的博客文章的作者,我想补充一些意见)

什么公认的答案说是正确的。一旦你的文件系统被破坏,就没有保护。另外,是的,如果写得不好,就可能以未加密的形式暴露数据。这个工具意在简单地提供一种方式来使处理数据库中数据的加密更容易。如果您不喜欢自动解密功能,那么删除行为中的afterFind()回调将不再起作用,以及可以提高安全性的任何其他调整都是微不足道的(以方便)。

我希望这可以帮助任何人在这篇文章中失败。有人有,因为我刚刚从这个问题中获得了一些对我的博客的点击。 :)