当有人在网站上注册其电子邮件地址时,通常会要求他们通过点击发送给他们的电子邮件地址中的链接来验证或确认他们的电子邮件。订阅或取消订阅邮件列表也是如此。
可用性明智,这很好。这是非常快速和容易做到的,我想不出任何能打败它的东西。
我不确定我是不是在想事情,但我只是想看看我是否遗漏了什么或误判了什么。
据我所知,电子邮件验证/确认的目的是
目前流行实现的只需一个链接即可点击并立即验证电子邮件,有人可能会强行执行验证链接并绕过整个步骤。
只需访问verify.php?code=YOURBESTGUESSHERE
并尝试各种不同的代码。
攻击者现在可以进行以下攻击:
我不确定后者会带来什么好处,而且为此目的创建一个丢弃地址似乎要容易得多,但我只是想把它放在那里完成。
我的问题:
这整个事情的最佳做法是什么,真正需要付出多少担忧和努力?风险与利益/安全性与可用性......
答案 0 :(得分:6)
如果攻击者YOURBESTGUESSHERE
的搜索空间足够大,则蛮力变得不可行。使用从电子邮件地址派生的代码加上通过已知良好的单向散列函数的已知良好实现提供的时间戳。
确保代码在使用后很短的时间内(可能是几天)。
在呈现代码时不要泄露信息 - 代码的真实用户知道它适用于哪个电子邮件地址,而其他任何人都不需要。
答案 1 :(得分:2)
如果需要,您可以随时提高安全性。考虑将链接与唯一代码相结合。因此,当蛮力允许找到链接时,他们仍然需要从电子邮件中输入随机代码。
尝试次数的建议将是我要实施的第一个,以避免系统问题(请求数量)而不是安全性。