存储加密密钥的安全方式-PHP


Secure way to store encryption keys - PHP

我通过PHP使用openssl和mysql加密。目前,我在php源代码中编写密钥,但我认为它不那么安全。如果有人获得了源(可能是FTP),加密就会被破坏。那个么,如何在Linux服务器上存储加密密钥呢?我无法使用其他Web服务器来存储密钥。

我假设您使用的是Apache。

将机密数据放入/etc/apache2/envvars中的环境变量中,将所有者设置为root,将权限设置为400。

攻击者必须破坏服务器才能拿到你的密钥。

您还可以编写一个脚本,在Apache启动时询问秘密(令人讨厌,但更安全)。

请注意,拥有root访问权限的人总是能够获得您的密钥,而试图向他们隐藏密钥只是一种安慰剂。

安慰剂溶液:

  • 默认情况下,使您的应用程序处于空闲状态,直到您将密钥POST到同一应用程序中的HTTPS页面,将密钥保存在全局变量中并继续您的业务。您必须考虑PHP进程的生命周期(当进程终止时,您必须重新发送密钥)

我相信你最好的选择(根据你的问题和评论)就是把键放在目录空间的某个地方。确保它们不在www根目录下。使用适当的文件权限(取决于您的服务器设置)。