2017-05-07 74 views
0

我希望如果保存將散列的密碼存儲在一個表中,並且存儲在其他數據(表)在同一個數據庫?將散列的密碼與其餘數據保存在同一個數據庫中是否安全

例如想象以下的(簡化的)結構(有很多其他數據表):

authentication  user   
--------------  ----------- 
auth_id {PK}  user_id {PK} 
username   realname 
passwordhash  auth_id {FK} 

它是安全的存儲這樣的用戶認證/口令,或是否應該differntly存儲,也許在一個額外的數據庫或其他?

回答

0

我建議您查看Sophos的this article,因爲它非常好地描述了原理和安全設計。

文章認爲有一個單獨的密碼服務器,以便沒有一個角色可以訪問密碼。

許多企業系統將密碼從其他憑證中隔離開來。

+0

_「一般建議是有一個單獨的密碼服務器」_ - 你有任何消息來支持這種說法嗎? – 1615903

0

這一切都取決於。通常,如果攻擊者可以讀取一個數據庫,那麼他們可能會讀取另一個數據庫,因此如果您的應用程序只是簡單地打開一個到另一個數據庫的SQL連接,您將不會獲得明顯的好處。

此外,如果他們可以訪問您的數據庫,他們可能會讀取數據庫中的流量,包括用戶名/密碼組合。因此,我建議將認證數據單獨存儲在單獨的數據庫中並不是安全方面的巨大改進;你最好把時間和精力花在其他安全問題上,比如密鑰管理(你正在抨擊你的哈希,對嗎?)。

但是,如果您可以設置物理上獨立的基礎架構,並將身份驗證功能作爲服務公開給前端, OAuth,你會爲攻擊者創造一個重大障礙。他們將不得不妥協這個替代數據庫,並且由於集成將在前端,他們不能依靠嗅探數據庫的流量。

相關問題