Php 每次登录时更新哈希盐是个好主意吗?

Php 每次登录时更新哈希盐是个好主意吗?,php,security,hash,salt,Php,Security,Hash,Salt,我想做一个安全的网站。每次用户登录时更新密码是一个好主意吗 编辑:我另外使用了一个全局salt,它是硬编码的。不,它毫无意义 盐析散列的目的是使它们唯一,即使原始密码相同。这样可以避免彩虹表攻击或在另一个网站上重新使用偷来的哈希值,而该网站的哈希值足以登录(在错误的Memory me实现中发生) 假设攻击者从您的数据库获取存储的密码哈希。这通常意味着他既知道盐又知道最后一道菜。现在他已经可以强行使用这个密码了。假设没有冲突,当蛮力攻击成功时,他将得到用户的实际密码。不管现在用什么盐,这个都会起作

我想做一个安全的网站。每次用户登录时更新密码是一个好主意吗


编辑:我另外使用了一个全局salt,它是硬编码的。

不,它毫无意义

盐析散列的目的是使它们唯一,即使原始密码相同。这样可以避免彩虹表攻击或在另一个网站上重新使用偷来的哈希值,而该网站的哈希值足以登录(在错误的Memory me实现中发生)

假设攻击者从您的数据库获取存储的密码哈希。这通常意味着他既知道盐又知道最后一道菜。现在他已经可以强行使用这个密码了。假设没有冲突,当蛮力攻击成功时,他将得到用户的实际密码。不管现在用什么盐,这个都会起作用


有关salting的更多信息,我建议您继续阅读

为每个用户随机生成一个新的salt,并且每次用户更改密码时,至少应生成一个新的salt。我不确定每次登录时生成一个新的是否是一个好主意。这似乎有些过分,没有提供任何显著的额外安全性

您可以尝试使用额外的静态站点范围的密钥

在这种情况下,即使您的数据库被破坏,哈希和salt也将可用。但是黑客需要访问本地文件才能获得你的静态密钥


散列(散列(salt+密钥)+密码)

您是否打算将salt与散列密码一起使用?salt/加密类型应该在创建帐户之前建立。@DarylGill:salt应该是随机的,而不是所有密码都相同。否则,salt的一次泄漏将允许攻击者为您的站点计算rainbow表。如果您想提高安全性,可以在使用salt检查用户登录之前,添加额外的步骤,如XOR密码或其他字符串,在数据库中以不同于用于检查密码等的顺序保存salt字符。可能性是无限的,它将使您几乎不可能根据您的数据库内容获取密码,只有攻击者也需要访问您的源代码。如果攻击者同时知道salt和最终哈希,他仍然需要知道方法用于创建最终哈希,如果他能够在不访问源代码的情况下仅获取db内容,我们仍然可以使他几乎不可能获取密码。模糊性带来的安全性很差。除此之外,如果这个家伙用一个已知的密码创建了一个帐户,他很可能知道你使用了什么方法。