如果黑客有權訪問我的數據庫中的哈希,他可以訪問數據庫中的其餘信息。那麼,爲什麼他會試圖解密密碼呢?我應該將密碼存儲在不同的服務器上以保存其餘的數據嗎?這是我可以設想它有用的唯一場景。爲什麼我應該關心哈希密碼呢?
回答
有時黑客不能完全訪問您的數據庫。有時他們會發現一些SQL注入漏洞或其他弱點,以致於某些人無法正確編碼,所以他們最初只能做簡單的事情,比如一次打印一個數據庫單元。如果他們能夠打印出真正的密碼,突然事情會變得更糟。
數據庫通常備份到磁帶,有時這些磁帶丟失甚至丟失。如果黑客獲得這樣的快照,他可以學習很多關於你的系統的知識。但是如果密碼仍然被散列,他不能使用系統做一些惡意的事情,比如以不同的用戶身份登錄並開始改變。更糟糕的是,大多數用戶在許多系統中保留一個或幾個密碼。在轉儲中查找舊的備份磁帶可能是其他帳戶的金礦,即使該磁帶用於已停用的系統。正確地對散列密碼進行防護。
我聽說大多數黑客都是內部工作。即使對於您信任的人以其他身份登錄,也最好刪除該能力。
如果您認爲這種事情沒有發生,請在reddit上與他們交談。
人們經常使用相同的用戶名/密碼在其他網站(包括,例如,在線訪問銀行賬戶),不同的帳戶。
一旦你發現了這個黑客攻擊並保護了你的數據庫,黑客仍然能夠登錄到你的用戶帳戶。
因爲即使您有權訪問數據,訪問應用程序實際上也更重要。例如,該應用程序使處理數據變得更容易。
散列密碼防止所有的眼睛偶然曝光。
例如,您可能在多個站點上擁有相同的密碼。快速瀏覽數據庫不僅會影響您的應用程序,還可能會影響其他應用程序。
這只是一個很好的,堅實的做法,哈希你的密碼。
我應該將 不同服務器上的密碼存儲到我的 數據的其餘部分嗎?
這增加了您的系統的複雜性,但如果這是您可以做的事情,那絕對是一種改進。
請注意,使用身份驗證服務器(如Kerberos,RADIUS或Windows域身份驗證)有效地將密碼放在另一臺服務器上。
有時候,你不知道誰會是系統管理員。您仍然希望保護您的用戶免受他們的攻擊。因此,通過對密碼和所有重要信息(如信用卡)進行哈希處理,您會使黑客或管理員變得更加困難。而且,我認爲密碼永遠不應該字面書寫。我的意思是,我使用了一個密碼,因爲2年,我從來沒有看到它寫下來..爲什麼管理員,我不知道應該看到我的密碼?!
使用散列密碼可防止攻擊者能夠登錄到您的應用程序,即使他們知道散列。您的登錄頁面要求提供原始密碼,因此要使用它登錄,他們必須顛倒散列(計算碰撞)。例如,使用彩虹表,這對於MD5來說相當微不足道,例如,這是唾沫進入的地方。然後攻擊者需要知道1)鹽和密碼結合的方式(那裏沒有太多的安全性),2)鹽這可能已經在數據庫中了),3)他們必須爲密碼和鹽的每個組合計算該值。這不僅僅是計算普通密碼的哈希值並尋找匹配。
主要是因爲做得好,幾乎無足輕重,效益可能非常高。
最佳安全實踐建議:
您應使用唯一的(用戶ID,密碼)對每個帳戶,您有。但大多數人使用一對資源(電子郵件,銀行,等)。攻擊者可以從一個資源中竊取它們並使用它們訪問另一個資源。使用散列密碼 —請參閱http://en.wikipedia.org/wiki/Salt_(cryptography) —防止此類攻擊。
您應該加密所有數據庫中的敏感數據,而不僅僅是密碼。你的觀點是有人可能會竊取你的整個數據庫(或你的服務器)是完全有效的。
您應該將您的Web服務器從數據庫和其他任何寶貴資源中分離出來,以將攻擊隔離到最有價值的資產上。
有商業原因哈希密碼,也是如此。請記住,散列意味着您不會將用戶的密碼存儲在設備的任何位置。
根據適用法律,您可能需要向爲此在某些情況下。
如果您的數據被盜,您可以大大減少您的暴露。
您從社會工程更安全攻擊,其中攻擊者冒充合法用戶並哄騙員工泄露密碼。見http://en.wikipedia.org/wiki/Social_engineering_(security)。
當黑客訪問你的數據庫,這並不意味着他可以訪問的程序代碼,這些程序可以改變砍死數據庫邊界之外的數據庫或包容性可以改變其他程序。現在,我要問你一些事情:如果用戶被黑客攻擊並且有人有他或她的密碼,那麼你如何明確表示這不是你的應用程序或安全問題?
如果你沒有存儲密碼,你沒有這樣的責任!
如果申請是在大學顯示成績信息,那麼有權訪問密碼將允許您獲得該人的成績。如果密碼也允許您登錄在線課程系統,那麼您可以以該用戶的身份提交測試。
如果數據更加敏感,例如信用卡號碼或健康記錄,您可能會面臨訴訟。
很可能是更敏感的信息可能在更安全的系統上,在更強大的防火牆後面,因此他們可能通過侵入認證數據庫而發現了一個弱點。
通過散列密碼,那些有權訪問認證數據庫的用戶無法看到密碼,因此以不同的用戶身份登錄到非常敏感的系統。
正如我所看到的那樣,除了使數據檢索不方便之外,安全並不關係。
而且通過不方便在我們的意思是,它會帶你百萬計算年訪問(即單CPU試圖在密碼猜測將採取的百萬年尺度)的理想情況。
如果以明文方式存儲密碼,則需要總計0個計算年才能訪問。 LinkedIn醜聞看起來會更糟糕。所有你需要做的是SELECT * FROM USERS
(通過注射或內部人員)。
人們經常重複使用密碼,所以如果人們學習您的密碼,這意味着整個數據世界變得可以訪問他們(例如,不僅僅是他們的LinkedIn)。所以它成爲一個非常個人化的風險。作爲一個網站管理員,它是粗魯不是至少散列密碼:你沒有太多的尊重你的用戶採取試圖保護他們的信息的基本步驟。
即使哈希密碼可以被破解,您至少要採取最低限度的步驟來保護您的用戶。
如果他可以解密密碼,他可能也可以訪問其他網站上的用戶帳戶(例如,無論我們告訴人們多少次不要重複使用密碼,他們都可以)。存儲明文密碼是放棄所有用戶的PayPal,eBay &亞馬遜賬戶的好方法。
- 1. 我應該使用什麼密碼長度來處理Jasypt哈希密碼?
- 2. 我應該使用什麼作爲null的哈希碼?
- 3. Salt的密碼哈希值應該是「哈希」嗎?
- 4. 我應該如何使用PHP哈希我的密碼?
- 5. 什麼是哈希密碼笨
- 6. 爲什麼不是我的密碼哈希?
- 7. 哈希密碼
- 8. 爲什麼MD5/SHA1密碼哈希無法解密?
- 9. 我應該使用哪種密碼哈希方法?
- 10. 我應該使用哪個密碼哈希函數?
- 11. 什麼時候應該爲我的類型定義一個哈希碼函數?
- 12. 爲什麼我應該重寫equals和哈希碼方法以下scnerio
- 13. 爲什麼要將密碼哈希截斷爲14個字符?
- 14. PHP密碼哈希()
- 15. Windows哈希密碼
- 16. CakePHP哈希密碼
- 17. 加密哈希密碼?
- 18. 解密哈希密碼
- 19. 爲什麼密碼哈希不更新.... Mysqli編寫語句
- 20. 爲什麼這個密碼哈希和比較不起作用?
- 21. 我應該使用什麼哈希算法?
- 22. 這是什麼樣的密碼哈希/加密?
- 23. 爲什麼我們需要通過密鑰哈希?
- 24. 我應該擔心密碼安全嗎?
- 25. 爲什麼我的哈希不是undef?
- 26. 哈希表:爲什麼大小應該是素數?
- 27. 爲什麼我的哈希映射代碼打印爲空?
- 28. MySQL中的密碼和哈希密碼
- 29. ASP.NET的密碼哈希和密碼鹽
- 30. 爲什麼information_schema和performance_schema不是utf8mb4(我應該關心)?
我只是喜歡得到11 + upvotes一個問題後,我已經超過了我的代表一天o_0 – 2008-11-13 17:46:56
+1:內部工作。切勿存儲密碼。 – 2008-11-13 17:48:40
+1只是爲了嘲笑喬爾更多的外部代表。 – 2008-11-13 18:52:10