2017-03-25 48 views
-1

那麼網站如何保持密碼長期? 我的意思是非常重要的網站,例如政府或大型電子商務或社交網站。網站如何長期存儲密碼?

當然,他們在密碼的哈希(或鹽哈希)存儲在用於身份驗證的網絡服務器連接的數據存儲中,但它是什麼?

注意:我不是在詢問哈希或鹽漬,我在詢問存儲元數據的位置(例如哈希或鹽漬哈希),以使其始終可用?

事實上,Facebook這樣的網站如何存儲密碼?我猜他們會有散佈在世界各地的散列的多個副本?並且偶爾備份到磁帶上?

+0

只使用散列函數是不夠的,只是添加一個鹽以提高安全性。取而代之的是用隨機鹽對HMAC進行大約100毫秒的持續時間並用散列表保存鹽。使用「PBKDF2」,「Rfc2898DeriveBytes」,「password_hash」,「Bcrypt」等功能。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。 – zaph

+0

我不確定,但通常他們使用你描述的兩種機制。複製(通過多個實例複製數據)和備份。兩者都取決於你使用的數據庫,所以對此沒有單一的答案,但大多數數據庫引擎都實現了這些。 如果您要自己使用這些文件,請查閱如何爲特定數據庫引擎設置複製和備份。 – Lunar

回答

1

對於大多數應用程序,您只需要用戶密碼的散列。通常,由於安全原因,實際密碼未被存儲。如果數據存儲受到威脅,您不希望黑客能夠獲得用戶的實際密碼。

這通常是爲什麼,實際上,哈希首先是鹽漬的。 Salting使得使用彩虹表(預先計算所有可能的連擊組合的密碼錶,以通過某種類型的散列的密碼)難以重新獲得用戶可能在其他網站上使用的原始密碼。

這是回答了在這裏更深入:Best way to store password in database

0

問題過於寬泛回答。這不僅與政府網頁有關;如果存儲明文密碼,這將是一個真正的安全問題。根據安全需要,在大多數情況下使用密碼哈希。如果用戶需要證書(例如存儲在卡片上或使用其他進程獲取),則可能存在服務器上存儲的用戶公鑰(而不是散列)。

你的問題也要求完全不同的主題。當然,web後端數據庫也需要備份(不僅僅是密碼),還有幾種負載均衡技術也可以考慮地理位置主題等。

+0

我已將範圍改爲任何重要的網站,而不僅僅是政府。 – user87219