2011-02-11 24 views
0

我們正在建立一個安全的應用程序,並在討論所需要的用戶名進行驗證。 很明顯,對於需要建立複雜性規則的密碼,對於用戶名來說也是如此? 接受一個字母的用戶名是否不安全?什麼是安全問題?單字母用戶名不安全嗎?

回答

2

在現實中,用戶ID和密碼的組合,保護你的系統,以便需要 1個字符的ID給攻擊者,他們本來不會有信息,因此不太安全。

然而,允許一個1個字符的用戶ID實際上比,比方說,10個字符的最小安全,因爲攻擊者的搜索空間增大。換句話說,攻擊者必須檢查1到9個字符之間的所有可能性_in除了那些10個字符或更多。

用1個字符的ID的主要問題是你亞當,阿倫,亞​​倫和Alexandra之間如何區分:-)

2

在討論驗證所需 爲AA的用戶登錄

首先你談論的是驗證,而不是驗證。 The different between validation and verification.

它是不安全的接受一個字母 登錄

它不是特別不安全(如用戶名很少保密),但它確實有些限制您的應用程序。一個字母有多少種組合?如果您使用的是英文字母和數字0 - 9,您有36個可能的用戶名(不是很多)。

我也不明白你爲什麼想要允許甚至強制執行一個字母的用戶名,通常最好在你的應用程序中有有意義的數據。這是典型的電子郵件地址,因爲這既有意義又獨特。

我想聽到後面使用1個字母用戶名的原因 - 因爲我看不出在什麼現代軟件通常接受的任何優勢,你不能例如通過他們的姓名,查找用戶郵件地址或將其與單個字母相關聯的任何其他屬性(不包含用於該目的的表格 - 浪費時間)。

+3

Actuallly我們不打算強迫一個字母l ogin。我們的問題是要知道我們是否應該接受他們? – Patrick 2011-02-11 10:36:35

+0

接受它們並不會降低您的安全性(在我看來),但它會增加數據庫中無意義數據的數量 – 2011-02-11 10:44:08

2

這取決於安全級別,你試圖獲取。如果這是針對允許普通大衆查看用戶用戶名的網站,則不會產生影響。 (例如:社交網絡和用戶個人資料中用於驗證的用戶名稱包含在頁面標題中),因爲用戶名已公開訪問。但是,如果情況並非如此,那麼允許一個字符的用戶名可以輕鬆地進行用戶名枚舉。 低,中等風險的脆弱性(取決於應用程序),但是這一切都取決於你正在舉行的合規水平。

這是否有通過任何符合性測試?如pci?

編輯:簡而言之,是的,你應該要求用戶名是一定長度的,我會說5個字符的最小。我最喜歡做的事情是讓他們的用戶名爲他們的電子郵件

+0

我與您同時進行了枚舉。我討厭那些不讓我使用我的首選雙字母用戶名的人。 – 2011-05-20 01:17:06

2

上下文總是相關的(「安全從什麼?」),但作爲專業審查安全應用程序的人,使用戶名可預測幾乎總是一個壞主意,一個字符的用戶名肯定是可以預測的。讓攻擊者無法預知用戶名會增加攻擊者處理的熵。密碼應該提供您所需要的所有熵,但用戶在選擇具有足夠熵的密碼方面的難度令人難以置信。即使有密碼複雜性要求,普通用戶也只需要花費最少的努力來驗證(「P @ ndab34R!」不是一個很好的密碼)。

如果我知道您允許甚至需要單個字符的用戶名,作爲試圖訪問帳戶的攻擊者,我會做的第一件事是:嘗試使用密碼字典對所有單字符用戶名進行密碼猜測(根據需要進行修改以符合您的密碼要求)。機會很好,我會進來。一旦我進入,這可能會影響用戶取決於它的網站類型。如果這是一個任何人都可以註冊帳戶的公共網站,它只會影響我違反帳戶的用戶。如果它是經過身份驗證的網站,我不能隨意註冊自己的帳戶,現在我已通過身份驗證並能夠在網站上嘗試進行身份驗證攻擊,從而影響所有用戶的安全。

如果你有一個用戶名虛弱的要求,你可以嘗試通過提高在其他領域,如認證安全來抵消:

  • 強密碼要求
  • 分配密碼給用戶,而不是讓他們選擇自己
  • 強大的帳戶鎖定機制和/或人的驗證系統,以防止蠻力攻擊