发送随机密码盐作为激活码?
Posted
技术标签:
【中文标题】发送随机密码盐作为激活码?【英文标题】:Sending random password salt as activation code? 【发布时间】:2014-02-16 02:25:58 【问题描述】:我将设置我的注册表单以发送包含唯一代码(非常标准)的激活电子邮件。
我已经在我的数据库中为每个用户存储了一个随机生成的盐,它在注册时应用于他们的密码。
我的问题是,我有什么理由不应该只使用该盐作为用于激活电子邮件的唯一代码?这不会为我节省任何工作,但它可以随着时间的推移节省数据库空间。大多数情况下,我只是好奇人们会怎么想向用户展示他的密码盐。
【问题讨论】:
好吧,如果您的空间太紧,您可以在使用后从数据库中删除激活码。事实上,如果激活码存在,您可以使用删除操作作为验证。 一个适当的加盐和散列的字符串不应该因为公开盐而受到损害,但是,拥有盐可能有助于暴力破解散列。 【参考方案1】:这不一定是一个好的解决方案,但由于盐是独一无二的,所以它不应该是一个大问题。您可以对盐进行 rot13 和 base64 编码。然后,实际上没有人知道它是盐,您可以轻松地将其反转以查找它。
【讨论】:
【参考方案2】:如果用户是黑客,知道自己的 salt 会让他们更容易破解自己的自己的帐户,但如果每个人的 salt 都不一样,那么没有理由不这样做,如果是对你来说更容易。了解自己的盐只会帮助您作为黑客破解您自己的帐户。所以,简而言之,没有真正的原因。
【讨论】:
【参考方案3】:最好使用单独的、安全生成的值。
正如@SyntaxLAMP 提到的,使用盐作为激活码是information leakage 的一种形式。这也可能为MITM attack 打开大门,如果有人有足够的位置来检索所有通过明文发送的注册用户的盐分。
【讨论】:
以上是关于发送随机密码盐作为激活码?的主要内容,如果未能解决你的问题,请参考以下文章