2010-09-12 120 views
2

我正在研究一个应用程序,用户可以在他们收到应用程序的电子邮件邀请时注册。现在我所做的是生成发送给用户并存储在数据库中的邀请代码。然后,用户在其中包含邀请代码的电子邮件中给出的网址,例如:用户注册邀请

http://myapp.com/user/register/56jk4564k6567kj686kjh56

我是游荡,如果另一aproaches更好,像只存储用户的电子邮件,避免发送邀请码。

此外,使用邀请码,是否需要加密? “注册”页面上

$email = '[email protected]'; 
$check = md5('SECRET' . $email); 
$link = "register?email=$enail&check=$check" 

,再次计算哈希值,并与一个在链路比较:

+0

邀请代码系统有什么问题? – Jasper 2010-09-12 12:25:22

+0

没有什么,它现在正在工作(测试它),但只是想确认这是一个好主意这样做。 – Fungsten 2010-09-12 15:21:58

+0

嗯,它是...... – Jasper 2010-09-12 19:30:00

回答

1

Invita因为它用于验证电子邮件地址,这意味着用户注册时可以采取更少的措施。通常情况下,您必须通过电子邮件向用户发送密码以检查电子邮件地址是否真实 - 嗯,您刚刚完成了!

一个考虑因素是如果用户在一个地址获得邀请,然后真的想要使用不同的电子邮件地址注册会发生什么?也许他们有超过1个,并且想要使用另一个? (比如工作与个人)你需要验证这个人的代码是一样的。至于加密,我不会打扰 - 如果你的数据库被黑客入侵并且代码被盗,那么很容易就可以做出新的并再次发送出去。

+0

感谢詹姆斯,这就是它的工作原理,但我没有想到你提到的情况,我会为此努力。 – Fungsten 2010-09-12 15:45:32

-2

是的,你可以使用链接一起发送的电子邮件地址的哈希

UPD:这只是一个例子,在现实生活中,你应该盐存储主代码之外:

$salt = get_salt_from_config_file(); 
$check = md5($salt . $email); 
+0

直到有人解决你所做的所有事情,就是对电子邮件地址进行散列处理,然后每个脚本小孩都可以根据需要多次注册。 'SECRET'这个词并没有太多的意义 - 如果这是一个开源系统呢? – James 2010-09-12 12:34:04

+0

这意味着已知的源代码=严重的安全漏洞。这不是一件好事。 – Jasper 2010-09-12 12:34:42

+0

@詹姆斯:让它可以编辑站点管理员(例如在配置文件中)。 – user187291 2010-09-12 12:37:39