从用户电子邮件生成代码以生成链接,然后发送



我正在开发一个应用程序,使现有用户能够通过电子邮件邀请他们的朋友。在邀请过程中,我生成了一个代码,用于被邀请的人点击注册的链接。

目前我正在使用从他们的电子邮件字符串生成的默认哈希码,然而这可能是相当明显和不安全的。

我正在考虑使用这个:

Random random = new Random();
Integer code = random.nextInt()

但是我的Random实例需要在我的整个应用程序中是一个单例吗?每次app/jvm重新启动时,它将被"重置",从而可能产生两次相同数量的碰撞?

编辑实际上默认的哈希码并没有那么糟糕,攻击者需要知道有人被邀请了,他们的电子邮件是什么,并尝试在正确的时间范围内生成链接(邀请是有效的)。

您可以在电子邮件地址中添加(当前)日期/时间字符串,以使其唯一

散列算法不能保证唯一的散列,但您可以做的是提供唯一的输入。尝试将电子邮件与盐值或类似的东西结合起来。这样可以保证哈希值是唯一的。

最新更新