gpt4 book ai didi

database - 如何根据 GDPR 将用户名存储在数据库中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:09 24 4
gpt4 key购买 nike

不是 How to handle emails as usernames under GDPR? 的副本因为我的问题与性能有关。

我有一个应用程序,我想让它符合 GDPR。

我存储个人信息的策略是对其进行加密,但我很难弄清楚如何处理用户名。

我一直在寻找其他问题,比如 this one ,但我找不到任何与我有同样问题的。

我的问题是关于我应该如何在数据库中存储和验证用户名。

我想到的方法是三列:

  1. username_encrypted(加密 key 将在数据库之外,数据库将无法访问它)
  2. 用户名哈希:哈希(用户名+盐)

当我想以纯文本形式检索用户名时,我会得到 username_encrypted 并对其进行解密。

当我想验证用户名时,对于数据库中的每个用户,我必须选项 1:

  1. 使用用户盐计算哈希值(每个用户的盐值不同)(hash(username+salt))
  2. 将上一点的结果与username_hash列进行比较

那么,我的问题是:是否有另一种方法可以在不计算所有用户的哈希值的情况下实现相同的目标?对于较小的数据库,这可能不是问题。但是对于更大的数据库,这可能会产生很大的影响。

如果相关的话,我使用的数据库是 PostgreSQL。

验证用户名选项 2(请参阅下面的 Nosajimiki 回答/评论):

  1. 为所有用户设置一个全局盐,并且使用全局盐计算列 username_hash
  2. 计算哈希 (hash(username+global_salt))
  3. 将上一行的结果与 username_hash 列进行比较

最佳答案

您可以像处理密码一样处理它。使用站点范围的盐进行哈希处理后的登录名可以像密码一样进行检查;你只需要验证它,你不需要查询它。

这不是密码存储的最佳实践,因为您经常会发现很多人使用相同的密码,但对于用户名,站点范围的盐不应该暴露任何额外的漏洞,因为它们应该都是唯一的。

如果您需要在登录后显示用户名。为此,您可以将用户在登录表单中键入的用户名保存为 session 变量,然后再对其进行哈希处理。这样,只要您登录, session 就会记住您是 JohnSmith101,但数据库只知道您的哈希值。

关于database - 如何根据 GDPR 将用户名存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com