2015-09-15 110 views
-1

在我決定使用用戶名登錄系統後,我擔心人們總是可以知道哪些用戶名已被註冊。 我在登錄表單中使用用戶名,因此它們仍然必須是唯一的,但我可以避免/減少人們知道哪些用戶名正在使用的風險嗎?如何保持用戶名密碼

當他們知道一半的查詢時,它將使bruteforcing帳戶更容易。

在我當前的系統上,當用戶嘗試使用已經在使用的用戶名進行註冊時,他們會收到一條錯誤消息,告訴他們該用戶名已存在。

我不希望爲新帳戶使用電子郵件驗證。

我的擔心只是暴力。這是我需要的答案。 我已經強制通過正則表達式強密碼,所以主要問題是: 我是否必須強制隨機生成的用戶名,以獲得更好的安全性和保護我的用戶的隱私?

我正在使用PHP 7和PDO。

+5

你到底如何告訴人們選擇不同的用戶名? 「哎呀,對不起,這是行不通的」,無緣無故地讓你的系統顯得很愚蠢。如果您擔心暴力攻擊,那麼您的登錄系統應該能夠檢測到企圖並將其鎖定。這與揭示用戶名的存在無關。 –

+2

因此,您希望用戶選擇用戶名,但在存在時得到通知,但不讓他知道它存在?沒有意義。出於安全原因,密碼被髮明出來。如果你仍然想要祕密唯一的用戶名,你將不得不生成它們,而不是讓用戶選擇它們。 –

+0

@Dagon這將是如此,直到第一次嘗試註冊(測量)它:) –

回答

3

一個解決方案是強制用戶選擇由系統認可的用戶名。例如,如果用戶必須輸入他們的興趣作爲用戶名的種子,則可以整齊地迴避該問題。

用戶:「小狗」和「蝴蝶」。 系統:你想使用「小狗」還是「小狗 - 蝴蝶」作爲你的登錄名?

我不會聲稱這不是煩人的,但它是有效的,並且您可以隨時允許公開可查看的別名由用戶設置或默認爲通用名稱,就像堆棧溢出一樣。這將隱藏實際的名字,並帶來混亂和惱人的暴力攻擊者的獎金。

編輯:如果你不強迫用戶名,你可以簡單地採用常見的Oauth2或電子郵件作爲用戶名的方法。這可能會稍微不安全,因爲人們的電子郵件地址通常很容易確定。

+1

即時將我的S.O用戶名更改爲「小狗蝴蝶」,謝謝 –

+0

「海盜忍者」即將流行...... –

+0

這就像色情遊戲名稱 –

2

只是一個想法:如果用戶名需要超級保密。當用戶註冊時,您可以生成隨機GUID作爲用戶名。

這可能有點矯枉過正,但它會使用戶名幾乎不可能猜到或蠻力。

副作用是用戶可能難以記住他們的用戶名。

+0

這是我以前的主題中的原創想法。使用UUID或任何其他長字符串對於常規用戶來說是一種矯枉過正,我不想爲了安全而犧牲太多。但感謝這個主意! –