0

我正在用 PHP 制作一个网站,我需要在 MySQL 数据库中存储有关用户的个人信息(姓名、地址、电话号码)。该信息将显示给用户。

我打算使用 AES 加密来加密数据。使用用户密码似乎对用户不友好,因为每次显示数据时用户都必须输入密码。

我想使用存储在会话中的字符串,其中附加了用户的 id、散列密码和用户名,然后进行散列。这是一个安全的密码密钥吗?

4

1 回答 1

2

不,那不安全。所有这些值都在数据库中。因此,任何访问数据库的人都可以派生密钥、解密值并读取数据。

您最初的想法更好:在用户密码上使用密钥派生算法的输出,例如 SCRYPT(不要只是散列密码,它太弱了)作为您的加密密钥。然后将其版本存储在用户的会话中。当然,您需要确保会话数据安全存储并在用户注销/空闲后完全删除。一种安全的方法是自己将数据写入文件,将文件名存储在会话中,然后安全地删除文件(例如,通过 shred 命令或用随机数据覆盖)。

于 2013-08-06T01:46:56.173 回答