Php 如何对用户名保密

Php 如何对用户名保密,php,security,brute-force,Php,Security,Brute Force,在我决定在我的登录系统中使用用户名之后,我担心的是人们总是知道哪些用户名已经注册了。 我在登录表单中使用用户名,因此它们仍然必须是唯一的,但是我可以避免/减少人们知道正在使用哪些用户名的风险吗 当客户知道查询的一半内容时,这将使强制执行帐户变得容易得多 在我的当前系统上,当用户尝试使用已在使用的用户名注册时,他们会收到一条错误消息,告诉他们该用户名已存在 我不喜欢对新帐户使用电子邮件验证 我关心的只是暴力。这就是我需要的答案。 我已经通过regex强制使用强密码,所以主要问题是: 为了获得更好的

在我决定在我的登录系统中使用用户名之后,我担心的是人们总是知道哪些用户名已经注册了。 我在登录表单中使用用户名,因此它们仍然必须是唯一的,但是我可以避免/减少人们知道正在使用哪些用户名的风险吗

当客户知道查询的一半内容时,这将使强制执行帐户变得容易得多

在我的当前系统上,当用户尝试使用已在使用的用户名注册时,他们会收到一条错误消息,告诉他们该用户名已存在

我不喜欢对新帐户使用电子邮件验证

我关心的只是暴力。这就是我需要的答案。 我已经通过regex强制使用强密码,所以主要问题是: 为了获得更好的安全性和保护用户的隐私,我必须强制随机生成用户名吗?


我使用的是PHP7和PDO。

一个解决方案是强制用户选择系统认可的用户名。例如,如果用户必须输入他们的兴趣作为用户名的种子,您可以巧妙地避开这个问题

用户:“小狗”和“蝴蝶”。 系统:您想使用“很多小狗”或“小狗蝴蝶”作为您的登录名吗

我不会说这并不烦人,但它是有效的,并且您可以始终允许用户设置公开可见的别名,或者默认为通用名称,就像堆栈溢出一样。这将隐藏真实姓名,并带来混乱和恼人的暴力力量攻击者的好处


编辑:如果您不想强制使用用户名,您可以简单地采用常见的Oauth2或电子邮件作为用户名的方法。这可能会有点不安全,因为人们的电子邮件地址通常很容易确定。

只是一个想法:如果用户名需要超级机密。您可以在用户注册时生成随机GUID作为用户名

这可能有点过分,但它会使用户名几乎不可能被猜测或使用暴力


另一个副作用是,用户可能很难记住自己的用户名。

您到底要如何告诉人们选择不同的用户名?“哎呀,对不起,那不行”毫无理由地会让你的系统显得愚蠢。如果您担心暴力攻击,那么您的登录系统应该能够检测并锁定尝试。这与显示用户名的存在无关。因此,您希望用户选择用户名,但在用户名存在时得到通知,但不让他知道它存在?没有道理。出于安全原因,人们发明了密码。如果您仍然希望拥有机密的唯一用户名,则必须生成它们,而不是让用户选择它们。@Dagon在第一次尝试注册(测量)它之前是这样的:)@Dagon“Hasenpfeffer”永远不能用作用户名。华纳兄弟对此拥有版权。我将告诉人们使用其他用户名,只需说:“用户名正在使用,请选择另一个”。我将我的S.O用户名改为“小狗蝴蝶”,谢谢
海盗忍者
很快就会流行起来……这就像色情游戏一样好吧。好主意!非常感谢。但我真的不知道如何编写这样的代码如果这听起来让人望而生畏,那就从开始吧?它是干净的,并且(IMO)简化了整个过程。代码中最大的部分是用于用户输入的表单,或者如果您不想让用户完全控制的话,可以从中提取一个大的单词列表。这是我在上一篇文章中的最初想法。对于普通用户来说,使用UUID或任何其他长字符串都是一种过度使用,我不想为了安全性牺牲这么多。但是谢谢你的主意!