我到处都读到(并且在实践中看到)用户名不可更改。当我问为什么时,将“安全性”作为理由。

我一直在寻找关于为什么更改用户名不安全的明确答案,但是我似乎找不到答案。

这里的任何有安全经验的人都可以回答这个问题吗?

注意:如果您不知道答案,请不要猜测。我本人已经想到了多种原因,但是我不知道实际的答案,因此不知道这个问题。

更新:
1:用userId表示某种唯一标识符,无论是数据库记录ID还是其他一些唯一ID。我曾多次被告知,即使用户名不是系统本身的主要/唯一标识符,更改用户名也不利于安全。

2:我允许用户更改其“公用名”。这是用于将用户标识为其他(非特权)用户的名称。
例如:



3:如JasonThe Rook所指出,一致性似乎是唯一的好理由。我觉得这种“最佳实践”可能是过去在系统中实际使用用户名唯一标识用户时遗留下来的东西。

最佳答案

从安全方面考虑,出于多种原因,您可能不希望允许用户更改其名称。但是,作为全力以赴的“永不做”-我不一定同意。但是,允许更改名称会产生很多额外的工作。如果要允许用户更改其身份,则由于以下原因,您必须非常小心。

  • 保持一致的用户身份。假设您运行一个留言板,并且Troll_1在每个人的阻止列表中。如果Troll_1可以更改他或她的名字,则所有这些用户过滤器都不好,并且您的用户不满意。
  • 除了答案1,您还希望在整个基础系统中保持一致性。如果允许用户更改名称,则必须确保检查自己,或者更新该用户正在使用的每个系统,以使他(她)不会丢失(或获得)允许(或不允许)进入的区域。 。此外,如果用户更改了他或她的名称,而新用户希望使用该名称,则您可能会无意中允许该新用户访问旧用户的信息/数据/如果您在更新系统时未进行尽职调查。
  • 根据您所拥有的系统类型,允许某人更改其用户名可能从欺诈的 Angular 使您的系统易于滥用。您可能会让某人来回切换他们的名字,假装是两个不同的人,试图欺骗某人。一个没有意识到的受害者可能很容易为此而堕落。 (听起来很愚蠢,我知道,但是我看到人们提出了疯狂的废话。)

  • 无论如何,正如我所说的-我认为允许用户更改其名称不一定是一件坏事。但是,它确实为您(开发人员)创造了更多的工作。用户名现在不能是数据库中的唯一ID,并且用户名现在不必与某人相关(因为以后可以更改),因此您必须具有一个用于表达“唯一性”的系统。

    10-07 19:11
    查看更多