我正在開發針對最終用戶必須創建一個帳戶,Web應用程序明智的密碼。這一部分非常簡單:我將使用SHA-256對他們的密碼進行哈希處理,這樣除了用戶本人之外,沒有人知道密碼。現在是困難的部分。用戶創建帳戶後,必須提供他/她的電子郵件服務器的密碼。現在的問題是:我怎樣才能體面地保護這個密碼(密碼將存儲在數據庫中)?如果我使用TripleDES加密密碼,任何開發人員或系統管理員都可以解密密碼並查看密碼。處理這樣一個問題的通常方法是什麼?非常感謝。如何保護存儲在數據庫中
回答
通常的方式做到這一點是使用從用戶的密碼派生的對稱加密密鑰。執行此操作的標準方法是使用RFC2898中指定的算法,該算法會生成一組加密安全字節,您可以將其用作密鑰和IV。它可能支持你的語言庫,例如.NET,這是我使用的類有Rfc2898DeriveBytes類。
當然,當你的用戶更改其密碼,您將不得不解密任何現有的密文,然後推導出新的密鑰和重新加密。
該類的鏈接是http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx。 – AxelEckenberger 2010-02-22 12:39:01
警告:這意味着您需要將用戶的密碼從客戶端傳輸到服務器,因此連接必須安全。散列密碼的優點之一是可以在客戶端計算機上散列用戶的條目,然後僅將散列傳輸到服務器。但是,假設一個安全的連接,blowdart的建議具有爲每個用戶的數據使用不同的加密密鑰的巨大優勢,大大減少了危害的威脅。 – 2010-02-22 12:40:15
通常情況下,你*將用戶的密碼從客戶端傳輸到服務器,但一旦到達服務器,就會對其進行哈希處理以進行比較。所以你要做的就是同時進行密碼檢查哈希,以獲得密鑰並將其置於服務器上的會話狀態,以便在整個用戶會話中使用它。 – blowdart 2010-02-22 12:43:09
- 1. 如何保護database.yml中存在的數據庫憑證
- 2. 如何在TFS 2017中保護GIT存儲庫選項
- 3. 保護數據庫
- 4. 如何在數據庫中存儲
- 5. 如何在數據庫中存儲「\」?
- 6. 如何在android數據庫中存儲
- 7. 如何在數據庫中保存
- 8. 如何在數據庫中保存XamDiagram?
- 9. 如何保護android數據庫文件?
- 10. Android。如何保護你的數據庫?
- 11. 如何在GAE數據存儲區中正確保存數據?
- 12. 指紋掃描儀如何保護其指紋數據存儲?
- 13. 如何在Azure密鑰保管庫中保護Blob存儲訪問密鑰
- 14. 密碼保護主存儲庫
- 15. 如何保存數據庫
- 16. 數據庫設計:如何在數據庫中存儲XML/JSON?
- 17. 將受保護的數據存儲在Java應用程序中
- 18. 如何保護SQL Server存儲過程
- 19. 在數據庫中保存
- 20. 如何在數據庫保存在Django
- 21. 黑莓數據庫保護
- 22. SQL Server數據庫保護
- 23. xml如何存儲在數據庫
- 24. 如何在HTML5中將數據存儲到數據庫中
- 25. 如何在android中保護450 MB的數據庫?
- 26. 如何在項目中保護數據庫配置文件?
- 27. BBP:如何在郵件系統中保護數據庫ID?
- 28. 如何在php中保護數據庫配置
- 29. 在android數據庫中存儲數據
- 30. 不在數據庫中存儲數據
開發人員不應該有權訪問生產數據庫。 – Giorgi 2010-02-22 12:38:30
也許,你是不是在控制該用戶使用的電子郵件服務器,但類似這樣的情況下,如果用戶想要第二方(你)來訪問他的一些資源,由第三方託管的(用戶的郵件服務器),沒有揭露第三方密碼,3-legged-oauth被髮明 – keppla 2011-06-03 14:19:14