即使我使用HTTPS,是否應使用散列(密碼+鹽)方法在客戶端散列密碼?或者我應該在它到達具有內置函數的SQL SERVER 2008 R2時進行哈希處理?謝謝。使用HTTPS時散列用戶密碼
回答
你爲什麼要在客戶端散列?這是一個用Javascript編寫的單頁面應用程序嗎?即使那樣,你也必須有一些連接到數據庫的服務器端語言(ASP.NET?PHP?)。在服務器端進行醃製和散列。客戶端對我來說味道不好......由於某些原因,如果您有邏輯和隨機生成發生在客戶端,salting/hashing過程似乎更容易受到攻擊。我無法指出特定的攻擊 - 但它似乎是推向客戶端的不必要的事情(除非可能無法獲得SSL)。
不管你是用你的服務器端語言還是直接在數據庫中做它都不是特別重要。我更喜歡在代碼中進行計算,然後將最終的散列發送到SQL。使用內置的SQL Server功能很煩人,版本之間存在問題 - 並且您的代碼永遠被鎖定在Microsoft-land中。
TL; DR做它服務器端,而不是客戶端,而不是直接在數據庫中。如果您希望在發送之前通過線路加密明文密碼,則必須使用HTTPS(絕對應該)。
據我所知,如果有人發現安全漏洞並從數據庫中竊取密碼列表,密碼的醃製(也)是有用的。如果鹽漬,用彩虹表等方法找回清晰的密碼幾乎是不可能的。否則,他們可能被破解。
如果您認爲HTTPS已損壞,則會產生很多安全後果。基本上所有東西都分崩離析
不要這樣做。這是浪費你的時間。以更好的方式使用它,例如開發用戶關心的功能。
只要做服務器上的標準哈希和醃製,並儘量不發明新的安全方案。
如果您使用SSL,則客戶端和服務器之間的通信將被加密。
問題的後半部分有點棘手。雖然SQL Server具有內置加密功能,但它存在訪問數據庫的任何人都可以使用的問題。
如果您在代碼中進行加密並將加密版本發送到數據庫,它會在數據庫遭到破壞時爲您提供保護 - 它們可能已損壞到您的數據庫中,但它們無法解密數據。
所以我的答案是......客戶端,而不是數據庫 - 加密和鹽在兩者之間的代碼!
- 1. 散列用戶密碼
- 2. 使用md5散列密碼
- 3. 散列用戶密碼中的Cookie
- 4. 使用Linux用來散列用戶密碼的算法散列字符串?
- 5. 禁用Wordpress密碼散列
- 6. 如何根據MediaWiki用戶表驗證密碼散列密碼?
- 7. 使用sha-1散列密碼將用戶導入到firebase中
- 8. Active Directory可以使用MD5散列密碼驗證用戶
- 9. 使用散列保護密碼
- 10. 使用散列設置postgres密碼
- 11. 使用散列密碼登錄PHP
- 12. 使用yii存儲密碼爲散列
- 13. 在Codeigniter中使用PHPass散列密碼
- 14. 使用SHA256 + SHA512散列密碼?
- 15. 使用SQL Server 2008密碼散列CLR
- 16. 使用ASP.NET MVC 3散列密碼
- 17. 散列密碼
- 18. 散列密碼
- 19. 密碼散列
- 20. 散列密碼
- 21. 散列密碼
- 22. 如何驗證用戶登錄時的散列密碼
- 23. 如何在java中使用散列函數來散列密碼?
- 24. 使用SHA-512和salt來散列MD5散列密碼?
- 25. 使用自定義用戶登錄時出現「未知密碼散列算法」
- 26. MongoDB用於散列數據庫用戶密碼的散列函數是什麼?
- 27. 散列時使用密碼兩次使它更安全嗎?
- 28. 使用NetValidatePasswordPolicy驗證以前散列密碼的密碼
- 29. password_verify - 密碼散列
- 30. 散列密碼,SQL
我想它會通過發送一個哈希和鹹味的密碼而不是明文來增加另一層保護。 – Andrew