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

时间:2012-07-31 18:35:11

标签: php mysql encryption

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

2 个答案:

答案 0 :(得分:2)

我假设你正在使用Apache。

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

攻击者必须妥协服务器才能将手放在钥匙上。

你也可以编写一个脚本,在Apache启动时询问秘密(烦人,但更安全)。

请注意,具有超级用户权限的人始终能够获取您的密钥并尝试将其隐藏起来只是一个安慰剂。

安慰剂解决方案:

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

答案 1 :(得分:0)

我相信你最好的(根据你的问题和评论)赌注只是把钥匙粘在目录空间的某个地方。确保它们不在www-root等之下。使用适当的文件权限(取决于您的服务器设置)。