php - 如何安全存储加密 key ?

标签 php mysql encryption aes

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

从那时起,我一直在研究如何保护进出数据库的数据。

我发现了几种方法,其中之一是 MySQL Encryption Software

第二个解决方案是使用 AES_ENCRYPT() 对 MySQL 中的数据进行加密和解密。和AES_DECRYPT() 。但我需要创建一个 128,196 或 256 位 key 才能加密和解密数据。然后每次我想执行 INSERT/UPDATE 时,我都会调用 AES_ENCRYPT() 并为其提供一个 key 来加密数据。然后,当我执行 SELECT 时,我将必须调用 AES_DECRYPT() 并提供相同的 key 将数据转换为纯文本。

这意味着我必须在 PHP 脚本中定义一个具有私钥的变量,以便我可以通过将定义的变量提供给 AES_ENCRYPT()AES_DECRYPT 来加密/解密()

我的问题是 在哪里/如何存储此私钥以防止黑客读取它。如果有人入侵我的服务器并读取 key ,那么他可以简单地读取数据,而加密的意义就会减弱。

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

谢谢

最佳答案

您面临的问题不是关键问题,而是计算机其余部分的安全问题。使用 mysql 意味着 mysql(如果安全运行)正在它自己的帐户中运行。事实上,您可以将 key 放在 mysql 拥有的目录中。这保证了 mysql 的大部分安全。 MySql 本身需要访问该 key ,因此您对该帐户无能为力。只需确保它只能由所属帐户读取。

关于php - 如何安全存储加密 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476403/

相关文章:

php - 如何自动加载具有不同子命名空间的 Controller ?

PHP - 永远为 "live"的服务器端变量?

MySQL 5.7强制使用/创建MyISAM

mysql - 如何使用子查询mysql获取学生列表中的兴趣爱好

linux - Linux 端点之间的加密隧道

cryptography - 使用公钥加密的网络连接

php - 如何使用 CakePHP 哈希算法和 SALT 在 MySQL 中为 CakePHP 网站数据库编写 SQL 语句生成加密密码?

mysql - 从MySQL数据库查询返回node.js中的[Object] [Object],并且JSON.stringify()似乎不起作用

php - 在php中加密和解密word docx文件的问题

javascript - 提交前过滤表单参数