2010-03-04 53 views
0

我有工作到一个点,我认为它是可用的,我很满意它。就这样说,我注意到了一些事情。大多数(如果不是全部的话)会根据电子邮件地址或用户名以及自动生成的散列码进行验证,该散列码的字符长度为X。我向用户发送的URL如下所示。帐户电子邮件验证 - 要检查的内容?

http://www.example.com/account/confirm/bob/cbv54c09023DpW

但是,你不会想以验证帐户,除非用户登录成功。因此,如果点击该网址并且我没有登录,它将强制我在验证之前登录。我的问题是,如果是这种情况,我宁愿使用“登录”用户名(或电子邮件)和发送的确认码验证帐户。

我问,因为我发现像Twitter和Facebook这样的网站会发送这样的通知,但如果您尝试修改URL(即example.com/account/confirm/sue/cbv54c09023DpW),它会登录您,但会告诉您“无法验证Sue的帐户像鲍勃一样“或类似的东西。你们是如何完成这个的?将用户名/电子邮件传递到URL字符串是否有意义?

回答

0

为什么不呢?它正在寻找两种数据的组合来确认;所以安全漏洞的可能性就越小。您可以检查它们是否已登录,并检查用户名和授权码是否与数据库数据匹配。

+0

对,我检查两个用户名和哈希码。也许我应该澄清,但我的问题是,为什么在URL中传递用户名?您可以将其更改为“/ sue/HASHCODE”并尝试登录,如果您检查URL中传递的内容,则会失败。我想,如果用户针对你登录的哈希码和用户名进行检查,那么URL中的用户名有什么意义。 – luckytaxi 2010-03-04 18:43:37

+0

我想这没关系。也许在Twitter上,他们只是这样做,所以用户不会让用户混淆。 – casraf 2010-03-04 19:05:24