2015-10-04 53 views
0

我知道PHP 5.5的新哈希函數不必使用用戶指定的salt,但會增加安全性嗎?我一直在做一些閱讀,並且據我所知,散列函數每次使用隨機鹽,當它需要驗證散列時,它可以從散列值中檢索它。但是有沒有什麼優勢可以產生自己的鹽和使用它們?任何損害?使用PHP 5.5的散列函數來增加安全性

+0

自己生成鹽不會有什麼好處。你可以做的是,用服務器端密鑰加密散​​列,這在某些情況下可能是一個優點。如果您有興趣,請查看我的[tutorial](http://www.martinstoeckli.ch/hash/en/index.php)的結尾。 – martinstoeckli

回答

2

我知道PHP 5.5的新哈希函數不必使用用戶指定的salt,但它會增加安全性嗎?

假設你說的是password_hash,那麼沒有。它含有你需要的所有鹽,並且沒有任何優勢可以添加。

也沒有損害,除了更多的代碼=更復雜的=更多的錯誤的可能性。

+0

謝謝!這有助於 – Chris

+0

我想補充一點,指定你自己的salt的能力已經在PHP 7中被棄用了,因爲我們沒有發現可能有用的單個情況,但很多情況下人們設法使用它來壯觀地破壞事物。 – NikiC

+0

@NikiC - 很高興聽到,我認爲這是一個非常明智的決定。 – martinstoeckli

0

似乎你在這裏有一些誤解。

一旦生成散列,整體想法是,它完全是一種方式。這意味着,從安全哈希算法的消息摘要中,無法知道鹽是什麼。例如,我看到人們將鹽存儲在另一列中。

鹽被設計用來在你的消息摘要集中創建熵。並防止使用彩虹表進行攻擊。 salt爲消息摘要增加了一個隨機性元素,超出了算法和原始值的範圍。

不利於嘗試聰明並使用自己的散列,這意味着您可能不像編寫API的安全專家那樣聰明。嚴重的是,當涉及到安全性時,你無法利用它來對抗你的想法。人腦容易出錯;這就是爲什麼我們在團隊中工作。一個專家團隊爲您製作了隨機哈希生成器。認真地使用它們。

+0

我應該更具體些。如果PHP 5.5函數在每個哈希上使用隨機鹽,它將如何驗證密碼? – Chris

+0

當然你必須知道鹽才能進行驗證,它存儲在散列值內的明文。 – martinstoeckli

+0

@martinstoeckli所以哈希中只含有純文本鹽?所以也許這不是巧合,我曾經在我的哈希中看到「垃圾郵件」這個詞。如果有人能夠訪問你的數據庫,他們不能把這個散列,把它放到他們自己的頁面,並嘗試使用password_hash強制它? – Chris