我可以在用户的 cookie 中存储电子邮件的加盐哈希 (sha256) 吗?

问题描述 投票:0回答:1

我正在开发一个网络应用程序,需要在中间件中访问用户的加盐哈希电子邮件。对我来说,最简单的方法就是使用 cookie。由于这是一个加盐的 sha256 哈希值,即使 cookie 被盗,黑客也无法通过比较识别出实际的电子邮件。这使得实施这样的系统安全吗?

hash email cookies
1个回答
0
投票

我仍然不太理解你的设计,但接受你提出的问题和评论:

这是一个加盐的 sha256 哈希值

每个用户的盐是否唯一、加密随机、足够的熵(理想情况下为 128 位或更多)并且对所有用户保密?

即使 cookie 被盗,黑客也无法通过比较找出实际的电子邮件

这一说法的真实性很大程度上取决于上述问题。一般来说,电子邮件地址的熵并不多,而且——特别是如果用户的其他信息已知的话——很容易被暴力破解。由于 SHA2 哈希值非常快且易于并行化,因此从相对较低的熵池(如有效且真实的电子邮件地址)中暴力破解它们非常容易。不过,足够安全的盐腌确实可以防止这种情况发生。

但是,这忽略了更重要的一点,让我担心你的整个威胁模型没有意义,你可能会犯一个重大的安全错误。 攻击者并不是试图窃取您的电子邮件地址!如果攻击者可以获取您的 cookie,他们几乎肯定可以窃取比您的电子邮件地址更有价值的信息。相反,如果您的系统的安全依赖于攻击者不知道其潜在受害者的电子邮件地址,那么您的系统就非常不安全!

如果这个散列电子邮件地址用于身份验证和做出授权决策,那么您最好希望您的加盐是极其安全的,因为它是每个有权访问该软件的人与冒充任意用户的能力之间的全部障碍!忘记一些模糊的“攻击者”,如果用户 Alice 知道用户 Bob 的电子邮件地址(她知道)并且可以猜测或暴力破解盐,她可以对 Bob 的电子邮件地址进行散列并将摘要放入 cookie 中以冒充他(到目前为止)至少就您的中间件而言)。

此外,使用固定的、难以更改的身份验证令牌是一种不好的做法。好的代币具有许多这些代币所缺乏的属性:

  • 它们的生命周期与会话一样长。这允许用户有意义地注销,或会话超时,这样服务器将不再接受他们的令牌,直到他们再次登录。
  • 用户每次登录时它们都是唯一的。
  • 即使攻击者知道有关用户的所有信息以及如何生成令牌,也无法预测或猜测它们(这对于您的方案来说是正确的如果两者盐都是安全的并且不知道电子邮件地址)不足以做任何有趣的事情。电子邮件地址不是秘密,人们把它们写在名片上!)
© www.soinside.com 2019 - 2024. All rights reserved.