2010-08-24 445 views
5

我正在構建一個項目,它有一個非常基本的登錄系統。將沒有註冊系統可用,用戶將被手動添加。我也很好地保護了數據庫數據輸入門。因此,畢竟,我是否仍然需要散列,甚至用戶密碼?我真的需要散列密碼嗎?

如果你的答案是肯定的,下一個問題是爲什麼?

+4

您必須始終假定您的系統可能會受到攻擊,並且攻擊可能會讀取您的數據庫。然後考慮後果。即使你做的都是正確的,這已經夠糟的了,但如果你存儲了簡單的密碼,那麼後果將遠遠超過「正義」系統。 – 2010-08-24 09:08:23

+2

作爲一般規則,適應良好實踐是非常重要的,那些容易實現的。如果你認爲,*這是一個簡單的項目,爲什麼要關心?*,你會習慣於潦草的編碼,最終你會在所有情況下忽略這種做法。 – 2010-08-24 09:20:45

+0

「我還很好地保護了數據庫數據輸入門」:您是否還保護訪問數據庫的所有其他可能性?它是否受到系統管理員,您的託管服務提供商,攻擊您的前端的黑客,備份安全等等的保護。通過實施簡單的哈希可以避免許多其他問題。 – 2010-08-24 09:29:09

回答

7

如果您爲每個用戶生成密碼並且不讓用戶更改密碼,那麼您可以提出一個不散列它們的方法。

但是:

  • 你將不得不解釋給大家,審計爲什麼你不散列密碼系統。
  • 您必須有某種方式證明系統管理員沒有查看用戶密碼,然後以用戶身份登錄。
  • 很多程序員會認爲你不知道你在做什麼。
  • 如果系統在某個時刻發生了更改,或者代碼被複制到另一個系統中,該怎麼辦?

我覺得這就像過馬路。

即使 綠人說可以跨越,您總是會看到兩種方式。

(這是更快地朝兩邊看,然後再解釋任何看孩子等等,爲什麼你不需要在這種情況下)

+0

謝謝,這是我想要得到的一點,但是'如果'句子足夠糟糕,所以散列很酷:D – gkaykck 2010-08-24 15:34:26

2

是的,因爲你的數據庫仍然存在,沒有註冊表單的用戶系統及其數據庫不會比一個用戶系統更難妥協。

即使您很好地保護了您的「數據庫數據輸入門」,您的數據庫仍然不是100%的攻擊者。如果有人仍然設法通過防禦措施並查看數據庫中的所有內容,並且所有密碼均爲純文本,則用戶的帳戶仍然受到威脅。通過對它們進行哈希處理,至少可以讓攻擊者花費更多時間,同時保護您的用戶。

2

是的,因爲,例如,有權訪問數據庫的人員可以輕鬆地模擬其他用戶。

11

那麼,入侵者能夠冒充另一個用戶會有什麼後果呢?在加入哈希和醃製的難度(這不是很好)上衡量這些後果。

您可能要考慮的一個風險是,如果用戶在多個站點上擁有相同的密碼,那麼他們的安全性與最弱的站點一樣安全。即使您自己手動分配密碼(並且不允許用戶選擇密碼),他們也可能繼續在其他站點使用相同的密碼。

+1

,因爲用戶傾向於重複使用他們的密碼,這也是爲了模擬其他站點/系統上的用戶 - 只有當密碼不是自動生成的時候。 – sfussenegger 2010-08-24 09:10:15

+4

@sfussenegger:我在第二段中的觀點是,即使在* this *網站上自動生成密碼,用戶仍然可以在另一個網站上重複使用密碼。 – 2010-08-24 09:12:34

8

絕對。這是您必須尊重的用戶最重要的義務之一 - 非常謹慎地對待他們的個人數據。

+3

這不僅是值得尊重的東西,也是許多國家法律規定的東西。 – 2010-08-24 09:18:53

+2

我想如果你的原則甚至超過法律要求是很好的。 – 2010-08-24 09:33:45

1

是的,因爲總會有損害數據庫的風險。請記住,很多人對許多網站,即時消息等使用相同的密碼,因此您不僅爲系統中的信息冒險。

1

人們使用相同的密碼不僅僅是您的網站以及。如果攻擊者獲取密碼,那麼比您的網站有更多的後果。該用戶的電子郵件,銀行賬戶等也可能受到影響。做勤奮的事情。

5

在某些轄區/行業,以純文本格式存儲登錄憑據可能違反了數據保護法律。如果你在美國這樣一個與醫療或財務記錄有絲毫關係的系統上做類似的事情,並且你接受了審計,即使沒有違規,如果發生最糟糕的事情,你也會幸運的在您的系統通過審覈之前,您的客戶和供應商拒絕與您做生意。也可能有鉅額罰款。即使你的系統並不是使用敏感數據,如果它打算供那些經常使用這些數據的人使用,那麼他們可能重用也用於訪問受管數據的密碼的可能性至少會使審計員非常緊張,並且讓他們的客戶非常不願意與您合作,即使您在技術上符合規定。

+0

哇,這很好,謝謝 – gkaykck 2010-08-24 09:27:26

+0

同樣的觀點也適用於英國 - 可能歐盟的要求,不記得了。 – RYFN 2010-08-24 15:47:38

1

爲什麼你不會哈希密碼?它可以保護您,您的員工和您的用戶,並且幾乎不需要執行任何操作。用戶有權期望您的系統管理員/ DBA /誰不能看到他們的密碼,並且您的管理員有權不必要地泄露這些信息。在任何內部/外部技術安全審計中,審計人員要做的第一件事情之一就是在數據庫中的任何密碼欄中輸入內容,並確定它們是否被散列。

0

而且我保護的數據庫中的數據輸入門非常好。

我敢打賭,每個系統設計者/管理員對於計算曆史中的每個受損口令文件都認爲是同一件事。