mysql - 如何使用 AES_ENCRYPT 在 MySQL 中安全地存储数据

标签 mysql aes

我们在 MySQL 中存储敏感数据,我想使用 AES_ENCRYPT(data, 'my-secret-key-here') 然后使用 AES_DECRYPT,效果很好。我最大的问题是如何保护 key ?以前我只是将 key 存储在一个 web PHP 文件中,所以像这样:

define("ENCRYPTION_KEY", 'my-secret-key-here');

但这确实行不通,因为我们的 MySQL 服务器和 Web 服务器是同一台物理机器,所以如果有人获得了对服务器的访问权限,他们可以获得存储在 MySQL 中的加密数据和 key 。

有什么想法吗?我在想我需要将 key 移动到单独的服务器,然后远程读取它。或者,如何为每条数据动态生成加密 key 。例如获取 customer_id 并在其上运行 md5,然后将其用作 key 。

最佳答案

将 key 放在一个文件中,将文件所有者更改为与网络服务器相同的用户。删除该组和其他所有人对该文件的所有权限。

super 用户 (https://superuser.com/questions/139393/linux-file-permissions-access-control-query) 上有一个类似的问题——我相信您可以在那里获得更好的帮助,或者只是通过谷歌搜索有关您正在运行的系统上的文件权限的更多信息。

关于mysql - 如何使用 AES_ENCRYPT 在 MySQL 中安全地存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697068/

相关文章:

java - 如何使用OpenSSL解密Java AES加密数据?

MySQL 查询有特定的约束吗?

java - 谁能帮我从我的 mysql 推文数据库中删除停用词

php - 从 TeSTLink 按下保存按钮时未触发 onClick

java - AES 加密 256 ECB 模式

python - PyCrypto 返回 AES 的 key 大小错误

java - 在计数器模式下使用 AES 生成一次性 key

php - 如何设计静态/动态测量应用程序?

mysql - 如何在一个表中进行交叉选择?

javascript - 字符串的 SubtleCrypto ArrayBuffer 键