我遇到了一家公司正在使用的系統,我們正在考慮與一家中型(對我們而不是他們)項目合作。正在通過電纜發送哈希密碼的安全漏洞?
他們有一個我們需要整合的web服務。
我目前對正確的用戶名/密碼管理的理解是,用戶名可以作爲明文存儲在數據庫中。每個用戶應該有一個獨特的僞隨機鹽,它也可以以明文形式存儲。它們的密碼文本必須與鹽級聯,然後可將此組合字符串散列並存儲在數據庫的nvarchar字段中。只要密碼通過SSL提交給網站(或網絡服務),一切都應該是可愛的。
如果我錯了,隨意翻閱我的理解,如上所述。
無論如何,回到手頭的話題。這個潛在的合作伙伴運行的WebService不接受我期望的用戶名和密碼。它接受兩個名爲'Username'和'PasswordHash'的字符串字段。我給出的'PasswordHash'值確實看起來像一個散列,而不僅僅是一個錯誤密碼字段的值。
這是爲我提高紅旗。我不確定爲什麼,但由於某種原因,我覺得通過電線發送散列密碼會感到不舒服。關於我的頭頂,我無法想到這將是一件壞事的原因......從技術上講,無論如何,數據庫中都有散列。但它讓我感到緊張,而且我不確定是否有這個原因,或者我只是偏執狂。
編輯
我被一些評論困惑下面,直到我重新閱讀我的文章。
原來,我有一句「只要密碼通過明文提交給網站(或網絡服務),一切都應該是可愛的。」
我發誓,因爲我以爲我在想'SSL'這個詞。出於某種原因,我輸入了「明文」這個詞。哇。
最差。錯字。永遠。
感謝那個弗雷迪。我想我會 - 仍然,很高興知道它不像我最初擔心的那樣糟糕。 – 2010-04-30 09:06:38
弗雷迪是正確的:哈希密碼是密碼然後。除非服務器首先發送一個隨機數,而客戶端使用隨機數來散列密碼 - 這是允許的。但是不要重新發明輪子...... – Konerak 2010-04-30 09:09:13
實際上,哈希密碼只是密碼 - 用於該網站 - 。如果散列包含nonce/salt客戶端,則攔截器將無法在其他站點上重用該密碼。當然,客戶端的散列是不可接受的,但它可能會增加一點瑕疵。 – Kzqai 2011-06-27 20:32:48