2011-07-25 25 views
4

剛剛完成我的註冊/登錄/註銷等...我的網站的功能類型,我很好奇。是否應該強制用戶輸入符合特定強度或字符集的密碼?用戶的密碼應該限制在特定的字符集還是實力?

例一,迫使他們使用長度的字母數字密碼> 8

例二,只允許他們使用字母數字字符和某些特殊字符(例如:!@#$%)。

第一個例子顯然是一個很好的事情,在銀行這樣的敏感網站上執行,但我想不出一個很好的理由來限制用戶的密碼字符。只要字符串被清理爲sql注入,它應該無關緊要什麼他們使用字符?

編輯

,當然還有密碼被HASHED

+0

有些銀行網站限制密碼唯一號碼,所以用戶可以通過撥號盤輸入密碼進行電話交易。但個人而言,我不喜歡限制字符集,因爲我使用的是站點密碼生成器。 –

+0

至少,檢查用戶是否提交了針對前100個密碼的密碼檢查。我建議強制執行特殊字符,但這取決於您正在建立什麼樣的網站以及您需要進入的障礙。安全並不容易,但有時這是必要的。 –

+1

我對安全哈希的重視不僅僅針對您,還包括所有遇到此問題的人。仍然有太多(閱讀:'> 1')網站,當被要求時向用戶發送他們的實際密碼。 – SLaks

回答

3

,不要告訴我是什麼角色我可以在我的密碼不能使用。

你應該支持全系列的Unicode碼點的密碼,用ASCII控制字符可能是個例外(\0\0x20)。

您有責任確保任何普通字符在密碼中工作,包括空格,引號和反斜槓。

密碼不能被SQL注入攻擊,因爲數據庫不能看到實際的密碼。在他們到達數據庫附近的任何地方之前,您應該對您的密碼進行散列和填充。 (使用bcrypt)


最低複雜性要求是一個雙刃劍。如果您需要密碼太複雜以至於用戶不記得,他們最終會將其寫在某個地方,並且可能在某處。
您至少需要6個字符和至少兩個A-Z,a-z,0-9或任何其他字符。

+0

沒有特殊字符? Tsk,tsk! :P –

+0

@Jared:我說這是最低限度。在設定實際最低值之前,您應該考慮所涉及的風險以及用戶的複雜程度。 – SLaks

+0

我確實說過:P對吧?我知道很多會抱怨的人,並且在上面註釋我的評論。 –

1

SQL注入應該不重要:你應該在它到達數據庫之前對它進行哈希處理。真的沒有理由限制字符集。

相關問題