1

我想将敏感的用户数据(如名称和地址)存储在 mysql 数据库中。

我的主要问题是如何搜索包含加密数据的数据库。

如果有人偷了电脑,那就不好了,如果数据以纯文本形式存储,所以我想用一个密钥加密它,这个密钥存储在 php 文件中。php 文件使用 ioncube 编码,因此 php 代码中的密钥(非常)安全。

另一方面,我还希望能够从 Web 前端查询应用程序以获取用户名和地址。

我的第一个想法是在存储数据之前加密数据,在我的搜索页面中,我必须读取整个用户数据库并完全解密,这样我就可以使用 php.ini 搜索结果。

但对于大型用户数据库,这将非常占用内存。


附加信息:

我已经加密了密码,所以我不需要解决方案。

我需要 php 和 mysql 的解决方案,因为我无法更改服务器配置(磁盘加密等)。服务器是旧的 ubuntu 9 安装,非常不安全,但无法更改,原因我不会在这里解释。

4

2 回答 2

2

您可以加密数据库行的每个敏感字段,但您需要确保密钥安全。如果您担心整个服务器被盗,那么您不能将解密密钥存储在文件系统上,因为它会与机器一起被盗。

您可以使用根据用户密码生成的密钥对每个用户进行加密。由于您(我假设)仅存储密钥的哈希值(使用 Bcrypt),因此攻击者很难检索用户的密码。 但是,这意味着只有用户可以查看他的数据;管理员帐户将无法解密其他用户的敏感数据。这对你来说很可能会破坏交易。

如果用户之外的其他人需要访问数据,那么您必须在整个应用程序中全局使用相同的加密密钥。如果在配置文件中没有此密钥,您唯一的选择是尝试将密钥存储在内存中(这样您就必须在系统可用之前对其进行初始化)。这不足以保证密钥没有写入磁盘(想想交换文件等),但在冷启动后更接近于保护数据。

于 2012-09-24T11:53:25.750 回答
0

很简单,将您的服务器存储在锁和钥匙(或生物识别安全)后面。

并散列您的密码。

选项 2 使用加密文件系统

于 2012-09-24T11:14:51.103 回答