这不是How to handle emails as usernames under GDPR?的副本,因为我的问题与性能有关。
我有一个要符合GDPR的应用程序。
我存储个人信息的策略是对它进行加密,但是我很难弄清楚如何处理用户名。
我一直在搜索其他问题,例如this one,但找不到与我同样的问题。
我的问题与如何存储和验证数据库中的用户名有关。
我正在考虑的方法是包含三列:
当我想以纯文本格式检索用户名时,我得到了username_encrypted并且对其进行了解密。
当我要验证用户名时,对于数据库中的每个用户,我必须选项1 :
所以,我的问题是:是否有另一种方法可以在不计算所有用户哈希值的情况下实现同一目标?对于较小的数据库,这可能不是问题。但是对于更大的数据库,这可能会产生很大的影响。
如果相关,我正在使用的数据库是PostgreSQL。
验证用户名选项2 (请参见下面的Nosajimiki答案/评论):
答案 0 :(得分:2)
您可以像使用密码一样处理它。登录名用站点范围的盐进行哈希处理时,可以像密码一样进行检查;您只需要验证它,就不需要查询它。
这不是说密码存储的最佳实践,因为您经常会发现很多人使用相同的密码,但是对于用户名,站点范围内的Salt不应暴露任何额外的漏洞,因为它们应该都是唯一的。
如果您需要在登录后显示用户名。为此,您可以将用户键入的用户名保存为登录变量,作为会话变量,然后再进行哈希处理。通过这种方式,会话在您登录后就一直记住您是JohnSmith101,但是数据库仅知道您的哈希。