2012-01-05 63 views
1

我應該使用像-ZA-Z0-9密碼模式,還要求每個字符類的至少一個的密碼,或者乾脆讓密碼中的什麼嗎?密碼的競爭格局

網站允許用戶使用他/她的密碼是什麼?還有什麼我應該考慮的嗎?

+1

**沒關係,誤解的問題** - 什麼是密碼?你期望什麼類型的用戶?應該設置密碼要求以最好地爲使用密碼的人提供服務。我期望一個網上銀行的網站比我的論壇,例如更高的限制。 – Hecksa 2012-01-05 16:38:21

+2

我希望能夠使用一個密碼,比如'EA @#@#Σåß∂'! - 不要把它標記爲不安全的,因爲它沒有一個' - ZA-Z0-9'。 – 2012-01-05 16:41:56

+0

在正則表達式,行話說到:''/^[A-ZA-Z] [A-ZA-Z0-9 _ @#$%^&*()。] {10,25} $ /''你可以讓你的用戶創建一個以字母開頭的密碼,然後是一些可接受的字符,然後請求至少10個字符和最多25個字符 – Nonym 2012-01-05 16:44:52

回答

5

a-ZA-Z0-9過度受限。你應該讓我使用任何字符,執行最低要求(即至少8個字符,至少一個字母和一個數字)

+1

至少有一個標點符號!但+1。 – 2012-01-05 16:38:10

+0

@Iarsmans我通常會包括一個標點符號要求,是的,但是如果他提出的是對客戶來說可能過於嚴格的-ZA-Z0-9。 – ceejayoz 2012-01-05 16:42:28

+0

我不知道'a-Z'是否按預期工作:) – 2012-01-05 16:46:50

2

應該有任何限制,用戶應該能夠使用什麼。由於在存儲密碼之前你會對密碼進行哈希(我希望),這對密碼包含的內容沒有任何影響。

如果您設置了要求,它們應該是最低要求。

-1

最少8個字符,優選12

至少一個數位,至少一個下殼體,至少一個上的情況下,至少一個符號(* /%...)

+0

我不認爲這些可以被視爲全球要求。不同的用例需要不同的最低要求。 – ceejayoz 2012-01-05 16:43:14

1

密碼正則表達式模式

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20}) 

擊穿

(      # Start of group 
    (?=.*\d)    # must contains one digit from 0-9 
    (?=.*[a-z])   # must contains one lowercase characters 
    (?=.*[A-Z])   # must contains one uppercase characters 
    (?=.*[@#$%])   # must contains one special symbols in the list "@#$%" 
       .   #  match anything with previous condition checking 
       {6,20} #  length at least 6 characters and maximum of 20 
)      # End of group 

相關:

+1

永遠不要強制執行最大密碼長度。 – ceejayoz 2012-01-05 16:47:40

+0

這只是一個例子,可以做什麼 – 2012-01-05 16:48:32

3

密碼熵

一個好的密碼的測試是不是字符集的代表,但數量。

熵測試: Dropbox的人已經把這個神奇的工具稱爲zxcvbn做到這一點。我會強烈推薦閱讀他們的write-up explaining it here

簡要說明:因爲他們一起提高密碼的熵(長度做到這一點遠比雖然字符類更快),但用戶則傾向於兩個字符類(小寫,大寫字母,數字和特殊字符)和長度都很重要朝向降低熵的可預測模式。

這可能是幽默,但它有益說明了這一點的一部分: http://xkcd.com/936/enter image description here

+0

我覺得我最近在博客上看到過這個......最近lol :) – Skuld 2012-01-05 17:11:04