4

我意识到这似乎是一个奇怪的问题(我很抱歉问自己几乎回答了什么)但是在阅读了对其他问题的回答后我很担心:

我有一个 php 脚本,它将数据存储在 localhost MYSQL 数据库中。其中一些信息是敏感信息,并使用 MYSQL AES 加密功能进行加密。

我读到 MYSQL 不会加密其连接中的数据。这在最近处理本地主机连接的两个回复中提到,因此我很担心。

我一直认为,由于数据是在同一台计算机内部传递的,因此被拦截的风险为零。不是这样吗?在存储数据之前我应该​​在 PHP 中加密吗?

我正在使用 mysqli_*

通过 SSL 连接到服务器。

我目前使用共享虚拟服务器,但一旦开发完成,我计划转移到专用机器。

请专家让我放心或告诉我应该如何做。

4

1 回答 1

2

正如您已经猜到的那样,将 SSL 用于本地连接是毫无意义的。SSL 的主要目的是对通道进行加密,以防止中间人攻击。但是在本地连接的情况下,中间不能有人。在您的设置中,我建议通过本地套接字进行连接,并完全绕过 TCP 层。

现在回到问题。

我应该在存储数据之前在 PHP 中加密吗?

不,如果数据库与执行脚本的机器位于同一台机器上。

不,如果数据库是远程的,并且链接是受信任的(您信任链接本身,或者链接是安全的,例如使用 SSL)。

是的,在所有其他情况下。

在后一种情况下(到远程数据库的不受信任的链接),AES_ENCRYPT()是不合适的。加密/解密过程由 MySQL 完成。数据在 PHP 和 MySQL 之间传输时未加密。此外,由于必须将加密密钥传递给 MySQLAES_ENCRYPT()AES_DECRYPT(),因此该密钥通常会与 SQL 查询的其余部分一起以未加密的方式发送。

于 2013-06-09T07:32:29.000 回答