簡體   English   中英

如何通過PHP驗證密碼?

[英]How can I validate a password via PHP?

我知道要存儲密碼,您必須對其進行哈希處理。 我使用password_hashpassword_verify來做到這一點。

但是令我驚訝的是,有人說您不需要在對密碼進行哈希處理之前就對其進行驗證,因為無論如何您都將對哈希進行哈希處理。

我認為,至少要驗證用戶輸入的密碼長度超過字符數,或者讓用戶輸入特殊字符( *"'等),至少是一個好習慣。密碼強。

所以在這里我有一些問題:

  • 是否不對密碼進行任何驗證而僅對密碼進行散列是一種好習慣嗎?
  • 在散列密碼之前是否還有其他安全措施可以進行驗證?
  • 如果是這樣,那么在該驗證中應考慮什么?

注意:我想從安全角度了解所有這些問題。

提前致謝!

密碼強度要求是上下文相關的。 您不會談論自己的背景。

通常,我會設置一個最小長度,並計算某種復雜性指數,以防止人們輸入“ aaaaaaaa”或“ 12345678”。

但是密碼強度要求很煩人,特別是當您規定許多規則時。

我經常嘗試實施另一種策略:選擇訪問者的密碼。 這不是一個新的想法; 考慮一下信用卡的個人識別碼。 這有很多好處:

  • 我的訪客不必選擇密碼,他們通常會覺得很尷尬。
  • 我絕對控制密碼的復雜性。
  • 我可能無法知道訪客的常用密碼(並在其他站點上破解他們的帳戶)。

還有一個缺點:訪問者必須“記住”我選擇的密碼。 把事情簡單化。 一個四位數的PIN碼已具有10000個變體。 為了防止濫用,我限制了嘗試次數。

對於需要非常安全的網站,您可以增加密碼的復雜性並定期重新發出密碼。 不要將密碼存儲在數據庫中,而只能存儲加鹽的哈希。 不要通過電子郵件發送密碼,而是將其顯示在受SSL保護的HTML頁面中。 如果安全要求不是很高,則可以忽略其中一些規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM