我們哈希用戶的密碼(在.NET Web應用程序)與SHA2 &以下鹽:每用戶鹽和跨用戶哈希攻擊
- 應用鹽 - 存儲在數據庫之外(在我們的例子作爲加密字符串的Web應用程序web.config) - 將其傳遞到參與登錄,創建新用戶和更改密碼等存儲過程中。
- 每個用戶salt - SQL uniqueidentifier - 當前存儲在用戶表 - 在插入時使用缺省值012自動生成
- 數據庫鹽 - 存儲在數據庫內的設置表中的鹽。
- 密碼 - 當然還有用戶密碼。
雖然這有助於彩虹&字典攻擊等我在想,如果有人確實發現在我們的安全孔和管理,以對數據庫運行的更新語句會發生什麼 - 特別是 - 什麼會從停止用戶使用他們知道的密碼在我們的網站註冊,然後用管理帳戶中的salt和hash替換鹽&哈希 - 從而使他們可以完全訪問我們的網站/應用程序?
這是我們應該真正擔心的風險嗎?如果是這樣,它是否有技術術語/標準預防技術?
我在想以某種方式將用戶ID(在我們的例子中是一個整數)包含在哈希中 - 只是好奇最好的做法是在這個還是我們過度思考?
PS:我知道SHA2心不是一個理想的哈希使用密碼和較慢的哈希方法,如BCrypt是首選,這是我在參與項目之前做了一個決定
PS:我們Web應用程序(及其應用程序密鑰)從SQL服務器嚴重防火牆 - 它們之間只有一個端口是開放的&用於SQL)
你如何存儲密碼哈希和SQL注入之間確實沒有關係。使用醃製哈希的目的是讓你的密碼轉儲對攻擊者無用。如果您允許攻擊者執行任意SQL,那麼更改密碼是您最擔心的問題。 – geoffspear 2013-03-21 12:41:43