Php 如何安全地存储加密密钥?

Php 如何安全地存储加密密钥?,php,mysql,encryption,aes,Php,Mysql,Encryption,Aes,我使用MySQL作为后端存储。 我们的风险管理团队要求我在将所有数据存储到数据库之前对其进行加密 从那以后,我一直在研究如何保护进出数据库的数据 我找到了两种方法,其中一种是 第二个解决方案是使用和对MySQL中的数据进行加密和解密。但是我需要创建一个128196或256位的密钥,以便能够对数据进行加密和解密。然后每次我想执行INSERT/UPDATE时,我都会调用AES\u ENCRYPT()并为它提供一个密钥来加密数据。然后,当我执行SELECT时,我必须调用AES\u DECRYPT()并

我使用MySQL作为后端存储。 我们的风险管理团队要求我在将所有数据存储到数据库之前对其进行加密

从那以后,我一直在研究如何保护进出数据库的数据

我找到了两种方法,其中一种是

第二个解决方案是使用和对MySQL中的数据进行加密和解密。但是我需要创建一个128196或256位的密钥,以便能够对数据进行加密和解密。然后每次我想执行
INSERT/UPDATE
时,我都会调用
AES\u ENCRYPT()
并为它提供一个密钥来加密数据。然后,当我执行
SELECT
时,我必须调用
AES\u DECRYPT()
并提供相同的密钥以将数据转换为纯文本

这意味着我必须在我的PHP脚本中定义一个具有私钥的变量,以便通过将定义的变量提供给
AES\u encrypt()
AES\u decrypt()

我的问题是 在何处/如何存储此私钥以防止黑客读取。如果有人入侵我的服务器读取密钥,那么他只需读取数据,加密就意味着更少

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


谢谢

您面临的问题不是关键问题,而是计算机其余部分的安全问题。使用mysql意味着mysql(如果运行安全的话)在它自己的帐户中运行。实际上,您可以将密钥放在mysql拥有的目录中。这保证了mysql的安全性。MySql本身需要访问该密钥,因此您可以为该帐户做的事情不多。只需确保它仅由拥有的帐户可读。

如果你隐藏了你的密钥,黑客进入了你的PHP代码,黑客可以执行以下操作:

A.回显/打印键(它是一个变量)。他不必在你定义它的地方找到代码,他可以在你使用它的地方找到函数

B.忘记密钥,使用您自己的解密功能查看数据并将其导出

大多数黑客攻击都是对PHP代码的攻击,您应该保护您的计算机、系统和数据库

使用MYSQL存储过程

如果只有经过身份验证的用户才能获得密钥,您就可以这样做。。。将密钥隐藏在MYSQL存储过程中,并仅在用户完成登录时将密钥提供给用户。数据库中的所有数据都应该加密,密钥不能作为普通存储数据访问。它应该在SQL存储过程中,拥有密码的用户将获得查询结果。用户表不应加密,只应将密码作为一种方式

最后一个解决方案应该只适用于通过身份验证的用户,例如应用程序。使用此解决方案,您可以轻松地保护用户配置文件

用户(基本数据)-->配置文件(依赖于登录的所有个人详细信息)

我对存储过程了解不多,但可以肯定的是,您可以将其应用于整个数据库,并使您的数据只能通过它们访问

看看这篇文章:

你可以在这里找到优点和缺点: