我正在建立一个网站,用户可以在其中将有关其工作活动的一些数据上传到 MSSQL 数据库中。数据本身不被视为敏感信息,但如果执行活动的用户是匿名的,则它是首选。我正在使用 Google Firebase 进行身份验证,以避免必须单独构建整个用户/身份验证功能。
在匿名化数据后,任何拥有数据库访问权限的人都应该无法将数据与用户(匿名化)连接起来,但用户应该仍然能够访问他/她的信息。
我自己考虑了以下选项:
- 使用来自 Google 帐户的用户电子邮件创建哈希,并将其用作活动数据表中的标识符
缺点:任何有权访问数据库的人都可以使用用户的电子邮件生成相同的哈希并查找数据
- 让用户选择一个单独的密码/密钥作为存储在数据库中的盐并将其添加到电子邮件地址 -> 生成哈希并作为标识符存储在活动数据表中
优点:更安全,因为任何尝试将数据与用户连接的人都需要知道盐
值 缺点:与上面的第 1 点相同:有权访问数据库的人可以将用户电子邮件与盐值组合并生成哈希
- 让用户在每次访问他们的数据时选择一个单独的密码/密钥(不存储在数据库中)来输入。将此作为盐添加到电子邮件地址 -> 生成哈希并作为标识符存储在活动数据表中
优点:没有人无法生成相同的哈希(除非知道用户的密码/密钥)
缺点:如果用户忘记了他/她的密码/密钥,则数据将无法恢复
我敢肯定还有另一种更好/更智能(希望很简单)的方式我没有想到。欢迎所有建议。